{"version":3,"file":"main-es2021.js","mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,6CAA6C;AAC7C;AACA;AACA;;;;;;;;;;;;;;;ACXmD;AAEnD,wEAAwB,CAAC,eAAe,CAAC,8DAAS,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;ACI7C,MAAM,wBAAwB;IAcjC,YAAoB,KAAiB,EAAU,QAAmB,EAAU,KAAsB;QAA9E,UAAK,GAAL,KAAK,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAW;QAAU,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAXtG,IAAa,MAAM,CAAC,KAAa;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,IAAI,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAID,QAAQ;IAER,CAAC;;gGAlBQ,wBAAwB;sHAAxB,wBAAwB;;;;;;;;;;;;;;;;;;;;ACA9B,MAAM,uBAAuB;IAchC,YAAoB,KAAiB,EAAU,QAAmB,EAAU,KAAsB;QAA9E,UAAK,GAAL,KAAK,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAW;QAAU,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAXtG,IAAa,GAAG,CAAC,KAAa;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAID,QAAQ;IAER,CAAC;;8FAlBQ,uBAAuB;qHAAvB,uBAAuB;;;;;;;;;;;;;;;;;;;;ACNS;AACwB;AACE;;AAgBhE,MAAM,oBAAoB;;wFAApB,oBAAoB;iHAApB,oBAAoB;qHAbpB;YACL,yDAAY;SACf;mIAWQ,oBAAoB,mBATzB,gFAAuB;QACvB,kFAAwB,aAJxB,yDAAY,aAOZ,gFAAuB;QACvB,kFAAwB;;;;;;;;;;;;;;;;;;ACTzB,MAAM,uBAAuB;IAYhC,YAAqB,KAAiB,EAAU,IAAe;QAA1C,UAAK,GAAL,KAAK,CAAY;QAAU,SAAI,GAAJ,IAAI,CAAW;QAFvD,mBAAc,GAAY,KAAK,CAAC;QAGpC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAZ2B,YAAY;QACpC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;YACxE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;IAEL,CAAC;;8FATQ,uBAAuB;qHAAvB,uBAAuB;yJAAvB,kBAAc;;;;;;;;;;;;;;;;;;;;ACLkB;AACuB;;AAc7D,MAAM,kBAAkB;;oFAAlB,kBAAkB;+GAAlB,kBAAkB;mHAXlB;YACL,yDAAY;SACf;mIASQ,kBAAkB,mBAPvB,+EAAuB,aAHvB,yDAAY,aAMZ,+EAAuB;;;;;;;;;;;;;;;;ACZ/B,gFAAgF;AAChF,2EAA2E;AAC3E,gEAAgE;AAEzD,MAAM,WAAW,GAAG;IACvB,UAAU,EAAE,KAAK;IACjB,KAAK,EAAE,KAAK;CACf,CAAC;AAEF;;;;;GAKG;AACH,sEAAsE;;;;;;;;;;;;;;;;ACf/D,MAAM,SAAS;IAIX,MAAM,CAAC,UAAU,CAAC,IAAqB,EAAE,KAAa;QACzD,IAAG,OAAO,IAAI,KAAK,QAAQ,EAAE;YACzB,IAAI,GAAG,UAAU,CAAU,IAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACvD;QAED,IAAI,KAAK,EAAE;YACP,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACrE,OAAO,CAAC,CAAC;SACZ;aAAM;YACH,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,aAAqB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACzC,CAAC;;AApBc,cAAI,GAAW,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;ACGpC,MAAM,oBAAoB;IAE7B,YAAY,OAAwB;QAChC,IAAI;YACA,iDAAiD;YACjD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SAEtC;QAAC,MAAM;YACJ,QAAQ,CAAC;SACZ;IACL,CAAC;CAQJ;AAEM,MAAM,2BAA2B;IAEpC,YAAY,OAAoC;QAC5C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QACvG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IACvC,CAAC;CAQJ;AAEM,MAAM,4BAA4B;IAErC,YAAY,OAAyB;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QACvG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IACvC,CAAC;CAQJ;AAEM,MAAM,qBAAqB;IAE9B,YAAY,OAA0B;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAClH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC/C,CAAC;CAQJ;;;;;;;;;;;;;;;;AC9EM,MAAM,wBAAwB;IAEjC,YAAY,OAA6B;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC;IACrD,CAAC;CAQJ;;;;;;;;;;;;;;;;;;;;;;;;;ACnBD;;;GAGG;AAKH;;;;;;GAMG;AACI,SAAS,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,OAAgB;IACrE,IAAI,OAAO,GAAW,EAAE,CAAC;IACzB,IAAI,OAAO,EAAE;QACT,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACnB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;KAC1C;IACD,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACI,SAAS,SAAS,CAAC,KAAa;IACnC,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC;IACvB,IAAI,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YACvB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;SAC7C;KACJ;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAEM,SAAS,UAAU;IACtB,MAAM,GAAG,GAAgC,EAAE,CAAC;IAC5C,IAAI,aAAa,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YACvB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACtB;QACD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;KACjE;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;GAIG;AACI,SAAS,YAAY,CAAC,KAAa;IACtC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;AACxB,CAAC;AAEM,SAAS,aAAa,CAAC,GAAW,EAAE,GAAQ;IAC/C,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,CAAC;AAEM,SAAS,iBAAiB,CAAC,GAAW;IACzC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAGM,SAAS,eAAe,CAAC,GAAW;IACvC,IAAI,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,CAAC;AAGM,SAAS,kBAAkB,CAAC,GAAW,EAAE,GAAQ;IACpD,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,CAAC;AAEM,SAAS,oBAAoB,CAAC,GAAW;IAC5C,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,CAAC;AAEM,SAAS,sBAAsB,CAAC,GAAW;IAC9C,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;;;;;;;;;;;;;;;;ACrGM,MAAM,OAAO;IACT,MAAM,CAAC,KAAK,CAAC,MAAc,EAAE,SAAiB;QACjD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAC,GAAG,CAAC,GAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,KAAU,EAAE,SAAkB;QAC1D,IAAI,OAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YAAE,OAAO,KAAK,CAAC;SAAE;QACjD,IAAI,OAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YAAE,OAAO,IAAI,CAAC;SAAE;QAEhD,IAAI,KAAK,KAAK,EAAE,EAAE;YACd,OAAO,IAAI,CAAC;SACf;QACD,IAAI,GAAG,GAAG,GAAG,CAAC;QACd,QAAQ,SAAS,EAAE;YACf,KAAK,EAAE;gBACH,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,EAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC1E,MAAM;YACV;gBACI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxB,MAAM;SACb;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC;SACf;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAAa,EAAE,SAAkB;QACpD,QAAQ,SAAS,EAAE;YACf,KAAK,EAAE;gBACH,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;gBACrB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,GAAG,CAAC;YACf;gBACI,OAAO,EAAE,GAAG,KAAK,CAAC;SACzB;IACL,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,GAAW,EAAE,MAAc;QAChD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,CAAM;QACzB,OAAO,OAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;IAClC,CAAC;CACJ;;;;;;;;;;;;;;;;AC/CM,MAAM,YAAY;IAKrB,MAAM,CAAC,cAAc,CAAC,KAAa;QAE/B,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;YACP,CAAC;SACJ;QAED,IAAI,YAAY,CAAC,cAAc,EAAE;YAC7B,OAAO;SACV;QAED,UAAU,CAAC,GAAG,EAAE;YAEZ,IAAI,MAAM,GAAQ,IAAI,CAAC;YACvB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAChD,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;aAC1B;iBAAM;gBACH,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;gBACvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC/B,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;iBAC3B;aACJ;YAED,IAAI,MAAM,EAAE;gBACR,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAI,MAAM,EAAE;oBACR,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACnC;aACJ;QAEL,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,KAAa,EAAE,OAAe,CAAC;QAEvD,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QAED,IAAI,YAAY,CAAC,cAAc,EAAE;YAC7B,OAAO;SACV;QAED,UAAU,CAAC,GAAG,EAAE;YAEZ,IAAI,MAAM,GAAQ,IAAI,CAAC;YACvB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAChD,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;aAC1B;iBAAM;gBACH,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;gBACvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC/B,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;iBAC3B;aACJ;YAED,IAAI,MAAM,EAAE;gBACR,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAI,MAAM,EAAE;oBACR,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;iBAC1C;aACJ;QAEL,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAc;QAChC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,MAAc;QAChC,IAAI,YAAY,CAAC,cAAc,EAAE;YAC7B,OAAO;SACV;QACD,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;QACnC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YACtE,YAAY,CAAC,cAAc,GAAG,KAAK,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC;;AArFc,iBAAI,GAAW,GAAG,CAAC;;;;;;;;;;;;;;;;ACD/B,MAAM,kBAAkB;IAC3B;IAEA,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,KAA4B;QAClD,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACpC,OAAO;SACV;QAED,MAAM,2BAA2B,GAAQ,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/F,MAAM,UAAU,GAAG,UAAU,GAAW,EAAE,KAAa;YACnD,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACjC,2BAA2B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,CAAC,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,KAA4B;QACpD,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACpC,OAAO;SACV;QAED,MAAM,6BAA6B,GAAQ,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrG,MAAM,UAAU,GAAG,UAAU,GAAW,EAAE,KAAa;YACnD,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACnC,6BAA6B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,UAAU,CAAC;IAC/C,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;AChCM,MAAM,YAAY;IAKrB,YAAY,CAAS,EAAE,CAAS;QAC5B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;CACJ;AAEM,SAAS,oBAAoB,CAAC,MAAc;IAE/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE5D,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,GAAwB,EAAE,CAAC;IAErC,SAAS,UAAU,CAAC,CAAS,EAAE,CAAsB;QACjD,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC;AAClB,CAAC;AAEM,SAAS,cAAc,CAAC,QAAgB;IAC3C,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAEM,SAAS,SAAS,CAAC,KAAa;IACnC,IAAI,CAAC,KAAK,EAAE;QACR,OAAO,IAAI,CAAC;KACf;IACD,MAAM,KAAK,GAAG,eAAe,CAAC;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAEM,SAAS,gBAAgB,CAAC,KAAa;IAC1C,OAAO,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAEM,SAAS,kBAAkB,CAAI,GAAM;IACxC,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC7E,CAAC;;;;;;;;;;;;;;;;;;AChDD;;;;GAIG;AACoD;;;AAKhD,MAAM,kBAAkB;IAc3B,YAAoB,KAAwB;QAAxB,UAAK,GAAL,KAAK,CAAmB;QAF5C,YAAO,GAAuB,IAAI,uDAAY,EAAQ,CAAC;QAInD,IAAI,CAAC,YAAY,GAAG;YAChB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU;YAC1C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;SAC3C,CAAC;IACN,CAAC;IAlBD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY,CAAC,KAA2B;QACxC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAcD,WAAW;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;;oFAxBQ,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;ACJD;AAK2C;AACpC;AAEmB;;;;;;;AAQjD,MAAM,eAAe;IAIxB,YAAoB,IAAwB,EACxB,MAAc,EACd,KAAsB,EACtB,YAA6B,EAC7B,aAAsC;QAJtC,SAAI,GAAJ,IAAI,CAAoB;QACxB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAiB;QACtB,iBAAY,GAAZ,YAAY,CAAiB;QAC7B,kBAAa,GAAb,aAAa,CAAyB;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC3C,CAAC;IAED,SAAS,CAAC,GAAqB,EAAE,IAAiB;QAE9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,MAAM,CAAC;QAEX,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;YACtB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBACvB,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBAC9C,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;SACtD;;YAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;QAExB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAE5C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACf,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;iBAC9E,MAAM,CAAC,YAAY,EAAE,SAAS,IAAI,EAAE,CAAC;YAC1C,GAAG,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;aACxB,IAAI,CACD,mDAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACJ,IAAI,GAAG,YAAY,CAAC,8DAAY,CAAC,EAAE;gBAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC5B,MAAM,GAAG,GAAG,OAAO,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAClD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC7B,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC7B;aACJ;QACL,CAAC,EACD,CAAC,GAAQ,EAAE,EAAE;YACT;;cAEE;YACF,IAAI,GAAG,YAAY,mEAAiB,IAAwB,GAAI,CAAC,MAAM,KAAK,GAAG,IAAwB,GAAI,CAAC,KAAK,KAAK,WAAW,EAAE;gBAC/H,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;aACzB;YACD;;;;eAIG;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,mEAAiB,IAAwB,GAAI,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC5G,kGAAgC,EAAE,CAAC;gBAEnC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC1B,IAAI,GAAG,CAAC;gBAER,IAAI,sEAAc,CAAC,GAAG,CAAC,EAAE;oBACrB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;iBACxD;qBAAM;oBACH,GAAG,GAAG,GAAG,CAAC;iBACb;gBAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;qBACzB,IAAI,CAAC,GAAG,EAAE;oBACP,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACtB,CAAC,CAAC,CAAC;aACV;QACL,CAAC,CAAC,CACT,CAAC;IACV,CAAC;IAEO,qBAAqB;QACzB,MAAM,gBAAgB,GAAW,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;YAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YAC7B,CAAC,CAAC,CAAC,CAAC;QACR,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,QAAQ,GAAG,QAAQ,gGAA8B,QAAQ,gBAAgB,EAAE,CAAC;IACnJ,CAAC;;8EArFQ,eAAe;gHAAf,eAAe,WAAf,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;ACjB6C;AAIS;;;;AAqJlF,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,uEAAc;IACd,iEAAW;IACX,+DAAU;AACd,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AA2FD;;;GAGG;AAEI,MAAe,YAAY;IAK9B,YAA6B,OAAoB,EAAS,KAAsB;QAAnD,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAHhF,QAAG,GAAgC,EAAE,CAAC;QAIlC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,gGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,WAAW;QACX,OAAO,wGAAuC,CAAC;IACnD,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW;IACX,CAAC;;wEArBiB,YAAY;0GAAZ,YAAY;AAoE3B,SAAS,SAAS,CAAC,SAAqB,EAAE,UAAuC;IAEpF,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;IACjD,UAAU,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;IACvD,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC/C,CAAC;AAuFD;;GAEG;AACI,MAAM,kCAAkC;IAA/C;QACI,0BAAqB,GAA0B,EAAE,CAAC;QAClD,yBAAoB,GAA0B,EAAE,CAAC;QACjD,yBAAoB,GAA0B,EAAE,CAAC;IACrD,CAAC;CAAA;AAEM,MAAM,uBAAwB,SAAQ,kCAAkC;IAQ3E,YAAY,WAA+C;QACvD,KAAK,EAAE,CAAC;QACR,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,qBAAqB,GAAG,WAAW,CAAC,qBAAqB,CAAC;YAC/D,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,oBAAoB,CAAC;YAC7D,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,oBAAoB,CAAC;SAChE;IACL,CAAC;IAED,IAAI,UAAU;QACV,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,EAAU,EAAE,OAAe;QACrC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE;YAC5G,OAAO;SACV;QAED,MAAM,UAAU,GAAwB;YACpC,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,OAAO;SACnB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc,CAAC,EAAU,EAAE,OAAe;QACtC,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE;YAC9G,OAAO;SACV;QAED,MAAM,WAAW,GAAwB;YACrC,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,OAAO;SACnB,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,EAAU,EAAE,SAAiB,EAAE,OAAe;QACxD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE;YAC/C,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;gBACb,IAAI,GAAG,IAAI;aACd;SACJ;QAED,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE;YAC3C,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;gBACX,EAAE,GAAG,IAAI;aACZ;SACJ;QAED,MAAM,KAAK,GAAwB;YAC/B,EAAE,EAAE,EAAE;YACN,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,EAAE;SACd,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;IACnH,CAAC;IAGD,KAAK;QACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,oBAAoB,CAAC,OAAe,EAAE,OAAe;QACjD,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YACjE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;QAEnG,OAAO,CAAC,CAAC,eAAe,CAAC;IAE7B,CAAC;IAED,qBAAqB,CAAC,OAAe,EAAE,OAAe;QAClD,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;YACnE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;QAEpG,OAAO,CAAC,CAAC,eAAe,CAAC;IAE7B,CAAC;IAED,mBAAmB,CAAC,OAAe;QAC/B,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YACjE,OAAO,CAAC,CAAC;SACZ;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC;QAE1E,OAAO,KAAK,CAAC;IAEjB,CAAC;IAED,oBAAoB,CAAC,OAAe;QAChC,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YACjE,OAAO,IAAI,CAAC;SACf;QAED,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC;QAE3E,OAAO,eAAe,CAAC;IAC3B,CAAC;IAGM,MAAM,CAAC,mCAAmC;QAC7C,OAAO,4EAAoB,CAAC,uBAAuB,CAAC,cAAc,CAAuC,CAAC;IAC9G,CAAC;IAEM,gBAAgB;QACnB,IAAI,IAAI,GAAuC;YAC3C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;SAClD,CAAC;QACF,0EAAkB,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,uCAAuC,CAAC,WAAiF,EAAE,eAAyB,EAAE;QAChK,IAAI,CAAC,WAAW,EAAE;YACd,OAAO,IAAI,CAAC;SACf;QAED,MAAM,GAAG,GAAuC,IAAI,kCAAkC,EAAE,CAAC;QACzF,KAAK,MAAM,cAAc,IAAI,WAAW,EAAE;YACtC,IAAI,cAAc,IAAI,uBAAuB,CAAC,mBAAmB,EAAE;gBAC/D,uBAAuB,CAAC,2BAA2B,CAAC,GAAG,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,CAAC;aACvG;YACD,IAAI,cAAc,IAAI,uBAAuB,CAAC,oBAAoB,EAAE;gBAChE,uBAAuB,CAAC,4BAA4B,CAAC,GAAG,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;aAC1F;YACD,IAAI,cAAc,IAAI,uBAAuB,CAAC,mBAAmB,EAAE;gBAC/D,uBAAuB,CAAC,2BAA2B,CAAC,GAAG,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;aACzF;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,2BAA2B,CAAC,qBAAyD,EAAE,UAA2D,EAAE,eAAyB,EAAE;QAE1L,IAAI,CAAC,qBAAqB,IAAI,CAAC,UAAU,EAAE;YACvC,OAAO;SACV;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC5B,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE;YAC7C,qBAAqB,CAAC,oBAAoB,GAAG,EAAE,CAAC;SACnD;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,IAAI,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzF,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;aAC5G;SACJ;IAEL,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,qBAAyD,EAAE,UAA2D;QAC9J,IAAI,CAAC,qBAAqB,IAAI,CAAC,UAAU,EAAE;YACvC,OAAO;SACV;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC5B,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE;YAC9C,qBAAqB,CAAC,qBAAqB,GAAG,EAAE,CAAC;SACpD;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;SAC7G;IACL,CAAC;IAEO,MAAM,CAAC,2BAA2B,CAAC,qBAAyD,EAAE,UAA2D;QAC7J,IAAI,CAAC,qBAAqB,IAAI,CAAC,UAAU,EAAE;YACvC,OAAO;SACV;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC5B,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE;YAC7C,qBAAqB,CAAC,oBAAoB,GAAG,EAAE,CAAC;SACnD;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC5C,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC/B,CAAC,CAAC;SACN;IAEL,CAAC;IAEM,kBAAkB,CAAC,qBAA2F;QACjH,qBAAqB,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;QAC1E,qBAAqB,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;QAC3E,qBAAqB,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;QAC1E,uBAAuB,CAAC,sCAAsC,CAAC,IAAI,CAAC,oBAAoB,EAAsC,qBAAqB,CAAC,CAAC;QACrJ,uBAAuB,CAAC,uCAAuC,CAAC,IAAI,CAAC,qBAAqB,EAAsC,qBAAqB,CAAC,CAAC;QACvJ,uBAAuB,CAAC,sCAAsC,CAAC,IAAI,CAAC,oBAAoB,EAAsC,qBAAqB,CAAC,CAAC;IACzJ,CAAC;IAEO,MAAM,CAAC,sCAAsC,CAAC,oBAA2C,EAAE,WAA+C;QAC9I,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YACvD,OAAO;SACV;QAED,IAAI,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,EAAE;YACtI,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,CAAM,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAa;SAC3I;QAED,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,EAAE;YAC3D,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;SACjE;QAED,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;gBACV,OAAO,CAAC,CAAC;aACZ;YACD,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CAAC,CAAC;aACb;YAED,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE;oBACvB,OAAO,CAAC,CAAC,CAAC;iBACb;gBACD,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE;oBACvB,OAAO,CAAC,CAAC;iBACZ;gBACD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;oBACxB,OAAO,CAAC,CAAC;iBACZ;aACJ;YAED,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACrC,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,uCAAuC,CAAC,oBAA2C,EAAE,WAA+C;QAC/I,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YACvD,OAAO;SACV;QAED,IAAI,WAAW,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC,EAAE;YACxI,WAAW,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,CAAM,WAAW,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAa;SAC7I;QAED,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,EAAE;YAC5D,WAAW,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;SAClE;QAED,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;gBACV,OAAO,CAAC,CAAC;aACZ;YACD,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CAAC,CAAC;aACb;YAED,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE;oBACvB,OAAO,CAAC,CAAC,CAAC;iBACb;gBACD,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE;oBACvB,OAAO,CAAC,CAAC;iBACZ;gBACD,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;oBACxB,OAAO,CAAC,CAAC;iBACZ;aACJ;YAED,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACrC,WAAW,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,sCAAsC,CAAC,oBAA2C,EAAE,WAA+C;QAC9I,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YACvD,OAAO;SACV;QAED,IAAI,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,EAAE;YACtI,MAAM,GAAG,GAAQ,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,cAAa;YACvF,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACpE;QAED,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,EAAE;YAC3D,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;SACjE;QAED,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;gBACV,OAAO,CAAC,CAAC;aACZ;YAED,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CAAC,CAAC;aACb;YAGD,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,CAAC,CAAC;aACZ;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACrD,WAAW,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACP,CAAC;;AAxWM,4CAAoB,GAAG,WAAW,CAAC;AACnC,2CAAmB,GAAG,UAAU,CAAC;AACjC,2CAAmB,GAAG,UAAU,CAAC;AAEjC,sCAAc,GAAW,eAAe,CAAC;;;;;;;;;;;;;;;;;;;AChbQ;;;AAIrD,MAAM,uBAAuB;IAkChC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAhC1B,sBAAiB,GAA4B,IAAI,CAAC;QAoCtD,IAAI,CAAC,iBAAiB,GAAG;YACrB;gBACI,QAAQ,EAAE,6DAAwB;gBAClC,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE,IAAI;aACtB;YACD;gBACI,QAAQ,EAAE,wEAAmC;gBAC7C,UAAU,EAAE,sBAAsB;gBAClC,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACtB;YACD;gBACI,QAAQ,EAAE,sEAAiC;gBAC3C,UAAU,EAAE,oBAAoB;gBAChC,IAAI,EAAE,UAAU;gBAChB,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACtB;YACD;gBACI,QAAQ,EAAE,qEAAgC;gBAC1C,UAAU,EAAE,uBAAuB;gBACnC,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACtB;YACD;gBACI,QAAQ,EAAE,gFAA2C;gBACrD,UAAU,EAAE,wBAAwB;gBACpC,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACtB;YACD;gBACI,QAAQ,EAAE,uEAAkC;gBAC5C,UAAU,EAAE,wBAAwB;gBACpC,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACtB;SACJ,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAhFD,IAAI,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;QAED,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClB;SACJ;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,UAAU;QAEV,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,OAAO,IAAI,CAAC;SACf;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACpC,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAuDO,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,OAAM;SACT;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC3E;SACJ;IACL,CAAC;IAEO,UAAU,CAAC,IAAsB;QACrC,IAAI,GAAG,IAAI,CAAC,0BAAyB;QAErC,qFAAqF;QACrF,OAAO,IAAI,CAAC;IAChB,CAAC;;8FAvGQ,uBAAuB;wHAAvB,uBAAuB,WAAvB,uBAAuB;;;;;;;;;;;;;;;;ACLpC,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,0CAAsB;IACtB,6DAAyC;IACzC,4DAAwC;IACxC,0DAAsC;IACtC,2DAAuC;IACvC,6EAAyD;AAC7D,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN4B;AAC4B;AAKhB;;;;;;;;;;;;ICMzC,6EAAiE;;;IAAjC,kFAAkB;;;IAClD,2EAAyF;;;IAA3D,gFAAuB;;ADG9C,MAAM,6BAA8B,SAAQ,6DAAY;IAa3D,YAAY,OAAoB,EAAE,KAAsB,EACpC,SAA2B,EAAU,OAAoB;QAEzE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFN,cAAS,GAAT,SAAS,CAAkB;QAAU,YAAO,GAAP,OAAO,CAAa;QAV7E,kBAAa,GAAY,KAAK,CAAC;QAC/B,eAAU,GAAW,IAAI,CAAC;QAC1B,eAAU,GAAW,IAAI,CAAC;QAKlB,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAOzD,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,aAAa;YAAE,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YAAE,OAAO;QAEjD,IAAI,OAAO,GAAwB;YAC/B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC;YAC/D,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;SAC/D,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;aAC/B,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACjC,IAAI,GAAG,CAAC,OAAO,EAAE;gBACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aAC1D;iBAAM;gBACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;aACzD;YACD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,GAAG,CAAC,OAAO;oBAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YAExC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEb,CAAC,EAAE,GAAG,EAAE;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC,CAAC;IACV,CAAC;IAGD,gBAAgB,CAAC,GAAkB;QAC/B,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;IACL,CAAC;;0GAvEQ,6BAA6B;2HAA7B,6BAA6B;;;;;;6KAA7B,4BAAwB;;QCjBrC,yEAAuB;QACnB,yEAA6B;QACzB,oEACM;QACV,4DAAM;QACV,4DAAM;QACF,mFAKkB;QAEtB,yIAAiE;QACjE,qIAAyF;QAEzF,yEAAmC;QAC/B,4EAA2E;QAAnE,qJAAS,iBAAa,IAAC;QAC3B,uDACJ;QAAA,4DAAS;QAET,6EAAsG;QAA9F,sJAAS,YAAQ,IAAC;QACtB,wDACA;QAAA,2EAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,sEAAqH;QACzH,4DAAM;QACV,4DAAM;QACV,4DAAS;QACb,4DAAM;;;QAtBe,0DAAwB;QAAxB,iFAAwB;QAM/B,0DAAgB;QAAhB,gFAAgB;QAClB,0DAAgB;QAAhB,gFAAgB;QAIpB,0DACJ;QADI,mGACJ;QAEkE,0DAAmC;QAAnC,oFAAmC;QACjG,0DACA;QADA,gHACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvB+G;AACjE;AAG6B;AAC1C;AACZ;;;;;;;;;;;ICaD,qEAAsI;;;;IACtI,qEAAkI;;;;IAK9I,+DAA2I;IAA3I,6EAAyJ;;;IAAjD,kGAAkC;;;;IAvBlJ,yEAAqD;IACjD,2EAAkD;IAC9C,uDACJ;IAAA,4DAAQ;IAER,yEAA8B;IAC1B,uEAMuC;IAEvC,4EAAmE;IAA3D,6TAA0B,CAAC,KAAE;IACjC,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,2HAAsI;IACtI,4HAAkI;IACtI,4DAAM;IACV,4DAAM;IACV,4DAAS;IAET,yIAAyJ;IAC7J,4DAAM;IACV,4DAAM;;;IAvBE,0DACJ;IADI,+GACJ;IAKW,0DAA4C;IAA5C,4GAA4C;IASjC,0DAAmB;IAAnB,sFAAmB;IACnB,0DAAoB;IAApB,uFAAoB;IAKxB,0DAAwF;IAAxF,kKAAwF;;;;IAqB1F,qEAAmI;;;;IACnI,qEAA+H;;;;IAK3I,+DAAsI;IAAtI,6EAAoJ;;;IAAlD,mGAAmC;;;;IAsBzH,qEAAuI;;;;IACvI,qEAAmI;;;;IAK/I,+DAAkK;IAAlK,6EAAgL;;;IAAhE,iHAAiD;;ADlE1K,MAAM,oBAAqB,SAAQ,6DAAY;IAqBlD,YAAY,OAAoB,EAAE,KAAsB,EAAU,EAAe;QAC7E,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADwC,OAAE,GAAF,EAAE,CAAa;QAfjF,eAAU,GAAY,KAAK,CAAC;QAC5B,mBAAc,GAAY,KAAK,CAAC;QAChC,kBAAa,GAAY,KAAK,CAAC;QAEtB,QAAG,GAAW,EAAE,CAAC;QACjB,oBAAe,GAAY,KAAK,CAAC;QAEjC,gBAAW,GAAU,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrD,aAAQ,GAAU,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC9C,iBAAY,GAAU,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEzD,qBAAgB,GAAyB,IAAI,uDAAY,EAAU,CAAC;QAEtE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAKrD,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SACjC;IACL,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAClC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;aAC5C,CAAC;SACL;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,8DAAkB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrF,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,+DAAmB,EAAE,8DAAkB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACvG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC,+DAAmB,EAAE,8DAAkB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SACjH,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,+DAAmB,CAAC,CAAC;SACvE;QACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACzD,SAAS,CAAC,GAAG,EAAE;YACR,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC,CACJ,CAAC;IACV,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;IAC/C,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;IAClD,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,UAAU;QACN,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAqB,CAAC,WAAW,EAAE,CAAC;SAClE;IACL,CAAC;IAED,gBAAgB,CAAC,EAAU;QACvB,IAAI,EAAE,KAAK,CAAC,EAAE;YACV,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;SAC5C;aAAM,IAAI,EAAE,KAAK,CAAC,EAAE;YACjB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;SACtC;aAAM;YACH,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;SAC9C;IACL,CAAC;;wFAtFQ,oBAAoB;kHAApB,oBAAoB;;;;;;QCdjC,2EAAqC;QACjC,yEAA2B;QACvB,iHAyBM;QAEN,yEAA6B;QACzB,2EAAkD;QAC9C,uDACJ;QAAA,4DAAQ;QAER,yEAA8B;QAC1B,sEAMoC;QAEpC,4EAAmE;QAA3D,4IAAS,qBAAiB,CAAC,CAAC,IAAC;QACjC,yEAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,uHAAmI;QACnI,wHAA+H;QACnI,4DAAM;QACV,4DAAM;QACV,4DAAS;QAET,mIAAoJ;QACxJ,4DAAM;QACV,4DAAM;QAEN,+DAA6B;QAA7B,0EAA6B;QACzB,6EAAyD;QACrD,wDACJ;QAAA,4DAAQ;QAER,0EAA8B;QAC1B,wEAO2C;QAE3C,6EAAmE;QAA3D,6IAAS,qBAAiB,CAAC,CAAC,IAAC;QACjC,0EAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,uHAAuI;QACvI,wHAAmI;QACvI,4DAAM;QACV,4DAAM;QACV,4DAAS;QAET,mIAAgL;QACpL,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,qEAAe;;QApFD,mFAAsB;QAEE,0DAAqB;QAArB,qFAAqB;QA6B3C,0DACJ;QADI,wGACJ;QAKW,0DAAyC;QAAzC,sGAAyC;QAS9B,0DAAgB;QAAhB,gFAAgB;QAChB,0DAAiB;QAAjB,iFAAiB;QAKrB,0DAAkF;QAAlF,sJAAkF;QAMhG,0DACJ;QADI,gHACJ;QAKW,0DAA6C;QAA7C,0GAA6C;QAUlC,0DAAoB;QAApB,oFAAoB;QACpB,0DAAqB;QAArB,qFAAqB;QAKzB,0DAAgG;QAAhG,oKAAgG;;;;;;;;;;;;;;;;;;;;;;IEvEtH,oEAA2E;;;IAAlD,sJAAwB;;;IATzD,yEAA+D;IAC3D,yEAA8B;IAC1B,8DAAK;IAAL,sEAAK;IACD,oEAAoH;IACxH,4DAAM;IACV,4DAAM;IAEN,+DAA4B;IAA5B,yEAA4B;IACxB,oEAAwD;IACxD,gHAA2E;IAC/E,4DAAM;IACV,4DAAM;;;IAXD,uGAAuC;IAQV,0DAAuB;IAAvB,qJAAuB;IACE,0DAAgB;IAAhB,mFAAgB;;;IAanE,0EAA0C;IACtC,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,0FACJ;;;IAEA,0EAA0C;IACtC,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,2FACJ;;;IAdR,yEAAgE;IAC5D,yEAA8B;IAC1B,8DAAK;IAAL,sEAAK;IACD,oEAAoH;IACxH,4DAAM;IACV,4DAAM;IAEN,+DAA4B;IAA5B,yEAA4B;IACxB,gHAEM;IAEN,gHAEM;IACV,4DAAM;IACV,4DAAM;;;IAhBD,uGAAuC;IAQT,0DAAa;IAAb,gFAAa;IAId,0DAAc;IAAd,iFAAc;;ADhBzC,MAAM,cAAc;IAN3B;QAQa,cAAS,GAAc,IAAI,CAAC;QAC5B,cAAS,GAAsB,IAAI,CAAC;QACpC,eAAU,GAAsB,IAAI,CAAC;QACrC,YAAO,GAAW,IAAI,CAAC;QACvB,aAAQ,GAAW,IAAI,CAAC;KAKpC;;4EAXY,cAAc;4GAAd,cAAc;QCV3B,0GAWM;QAGN,0GAgBM;;QA9BwC,+EAAe;QAcf,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;ACbjB;AACI;;AAgB1C,MAAM,WAAW;;sEAAX,WAAW;wGAAX,WAAW;4GAXX;YACL,yDAAY;SACf;mIASQ,WAAW,mBAPhB,4DAAc,aAHd,yDAAY,aAMZ,4DAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZ+G;AAG7E;AAGP;AACpB;AAEkD;;;;;;;;;;;;;;;;;;;;;;;;ICX/E,6EAAsD;;;IAW1B,sEACoE;;;IADmC,oGAA0B;IAA5H,wMAAyE;;;IAG9E,sEACmE;;;IADoC,oGAA0B;IAA5H,wMAAyE;;;IA0F1E,yEAC8C;IAC1C,wDACJ;IAAA,6DAAI;;;IAHyB,iKAA4B;IACtD,qHAA0C;IACzC,2DACJ;IADI,2FACJ;;;;IAEA,yEAAqH;IACjH,wDACJ;IAAA,6DAAI;;;IAF0B,iKAA6B;IACvD,2DACJ;IADI,2FACJ;;;IARJ,yEAA6D;IACzD,iJAGI;IAEJ,iJAEI;IACR,sEAAe;;;IARP,2DAAuB;IAAvB,wFAAuB;IAKvB,2DAAwB;IAAxB,yFAAwB;;;;IAM5B,yEAAyH;IAAnC,2VAA6B,IAAI,IAAC;IACpH,wDACJ;IAAA,6DAAI;;;IADA,2DACJ;IADI,2FACJ;;;IAfR,yEAA0D;IACtD,wJASe;IAEf,mOAIc;IAClB,sEAAe;;;;IAhBI,2DAAgC;IAAhC,iGAAgC;;;IAFvD,2EAAoE;IAChE,yIAiBe;IACnB,6DAAM;;;IAlB8B,2DAAwB;IAAxB,8FAAwB;;;IAjBpE,2EAA8F;IAC1F,2EAA4B;IACxB,2EAA2B;IACvB,wDACJ;IAAA,6DAAM;IAEN,2EAA2B;IACvB,2EAAkB;IACd,+DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,6DAAM;IACV,6DAAM;IACV,6DAAM;IACV,6DAAM;IAEN,gEAAwB;IAAxB,2EAAwB;IACpB,iHAmBM;IACV,6DAAM;IACV,6DAAM;;;IAlCM,2DACJ;IADI,4FACJ;IAYM,2DAAuC;IAAvC,kJAAuC;;;IA8BzC,2EAAsD;IAClD,wDACJ;IAAA,6DAAM;;;IADF,2DACJ;IADI,wGACJ;;;;ADzGjB,MAAM,YAAa,SAAQ,6DAAY;IA6B1C,YAAmB,OAAoB,EAAS,KAAsB,EAAS,SAAwB,EACnF,MAAc,EAAU,KAAwB,EAAU,UAA0B,EACrF,UAAkC,EAAS,OAAoB,EAAS,KAA4B,EACnG,OAAoB,EAAU,QAAkB;QAChE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAJP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAAS,cAAS,GAAT,SAAS,CAAe;QACnF,WAAM,GAAN,MAAM,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAmB;QAAU,eAAU,GAAV,UAAU,CAAgB;QACrF,eAAU,GAAV,UAAU,CAAwB;QAAS,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAuB;QACnG,YAAO,GAAP,OAAO,CAAa;QAAU,aAAQ,GAAR,QAAQ,CAAU;QA3BpE,oBAAe,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,YAAO,GAA6B,EAAE,CAAC;QAKvC,wBAAmB,GAAY,KAAK,CAAC;QAIrC,oBAAe,GAAY,KAAK,CAAC;QACjC,qBAAgB,GAAY,KAAK,CAAC;QAClC,qBAAgB,GAAY,KAAK,CAAC;QAClC,kBAAa,GAAiB,IAAI,0CAAO,EAAO,CAAC;QACjD,iBAAY,GAAY,IAAI,CAAC;QAG7B,gBAAW,GAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAanD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,kBAAkB;aAC1B,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,CAAC,CAAC;QAEN,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,MAAM,IAAI,GAA2B;gBACjC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;gBACtG,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/D,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE;gBACvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAE/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,MAAM;aACb,IAAI,CACD,uDAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,YAAY,6DAAe,CAAC,EACpD,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC;aACA,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEjD,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACtD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzC,CAAC,CAAC,CAAC;aACN;YACD;;eAEG;YACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;oBACrC,IAAI,CAAC,aAAa,EAAE,CAAC;iBACxB;YACL,CAAC,CAAC;YAEF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAChC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE;oBACtB,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;wBAC5B,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;qBACpC;yBAAM;wBACH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC7C,CAAC,CAAC,CAAC;qBACN;iBACJ;YACL,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEP,kBAAkB;IACtB,CAAC;IAED;;;;;OAKG;IAGH,WAAW,CAAC,EAAU;QAClB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,oCAAoC,CAAC,SAAiB;QAClD,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAEzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;gBAEnC,IAAI,OAAO,CAAC,uDAAuD,CAAC,EAAE;oBAClE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;iBAC5B;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;aAC9B,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CACN,CAAC,GAAG,EAAE,EAAE;YACJ,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;aAChC;iBAAM;gBACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACjC;QACL,CAAC,CACJ,CAAC;IACV,CAAC;IAED,eAAe;QACX,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEO,aAAa;QACjB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC9B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,qBAAqB;QACjB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7F,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,cAAc;QACV,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAED,cAAc;QACV,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;SACnC;aAAM;YACH,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAClC;IACL,CAAC;IAED,YAAY;QACR,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IAGD,UAAU,CAAC,KAAiB;QACxB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IAGH,aAAa,CAAC,MAAkB;QAC5B,uCAAuC;QACvC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,WAAW,KAAK,GAAG,CAAC;IACpC,CAAC;IAGD,gBAAgB,CAAC,GAAkB;QAC/B,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE9B,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAClC;YAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,eAAe,GAAG,KAAK;SAC/B;IACL,CAAC;;wEA3NQ,YAAY;2GAAZ,YAAY;mEAEV,yFAAqB;;;;;6JAFvB,4BAAwB;;QC5BrC,+HAAsD;QAEtD,gFAAuC;QAEvC,6EAAsL;QAClL,0EAA0B;QACtB,0EAAuB;QACnB,0EAAwB;QACpB,0EAAyB;QACrB,wEAAkE;QAC9D,2EAAS;QACL,yGACoE;QAEpE,2GACmE;QACvE,6DAAU;QACd,6DAAI;QAEJ,2EAAoC;QAChC,2EAAuE;QAA7B,yIAAS,sBAAkB,IAAC;QAClE,4EAAkB;QACd,+DAAK;QAAL,wEAAK;QACD,uEAA4G;QAChH,6DAAM;QACV,6DAAM;QACV,6DAAM;QACV,6DAAM;QAEN,gEAA2B;QAA3B,4EAA2B;QAEvB,4EAA0B;QACtB,2EAA2B;QAC/B,6DAAM;QAEV,6DAAM;QACV,6DAAM;QAEN,wEAAqB;QAEzB,6DAAM;QACV,6DAAM;QACV,6DAAM;QACV,6DAAS;QAET,0FAA8C;QAG9C,4EAAqD;QACjD,4EAAiC;QAC7B,4EAAqC;QACjC,0EAAmF;QAC/E,4EAAS;QACL,uEAAsJ;QAC1J,6DAAU;QACd,6DAAI;QAEJ,4EAAoC;QAChC,4EAA+C;QAA7B,yIAAS,sBAAkB,IAAC;QAC1C,+DAAK;QAAL,wEAAK;QACD,uEAA6G;QACjH,6DAAM;QACV,6DAAM;QACV,6DAAM;QACV,6DAAM;QAEN,gEAAsC;QAAtC,4EAAsC;QAClC,wEAAqB;QACzB,6DAAM;QAEN,4EAAqC;QACjC,2EAA2B;QAC/B,6DAAM;QACV,6DAAM;QACV,6DAAM;QAGN,4EAAgC;QAC5B,6EAA+B;QACnC,6DAAM;QAEN,+EAAuB;QACnB,2EAAuB;QAEnB,4EAA0B;QACtB,6GAqCM;QAEN,4EAAgD;QAC5C,4EAAuB;QACnB,4EAA6B;QACzB,4EAA6B;QACzB,uEAAkI;QACtI,6DAAM;QAEN,4GAEM;QAEN,4EAAwC;QACpC,yDACJ;QAAA,6DAAM;QACV,6DAAM;QAEN,4EAA8B;QAC1B,mFAA2C;QAC/C,6DAAM;QACV,6DAAM;QACV,6DAAM;QACV,6DAAM;QACV,6DAAM;QACV,6DAAS;QAGT,iFAA+D;QAM/D,kFAAyC;;QA5JxB,mFAAkB;QAI3B,2DAA8J;QAA9J,kRAA8J;QAK1H,2DAA4B;QAA5B,mGAA4B;QAAjD,gJAAoB;QAGT,2DAA2D;QAA3D,oIAA2D;QAG3D,2DAA0D;QAA1D,mIAA0D;QAoCxD,4DAA4B;QAA5B,mGAA4B;QAAjD,gJAAoB;QAEuF,2DAA0B;QAA1B,iGAA0B;QAA3H,qMAAyE;QAgC7D,4DAAqC;QAArC,gJAAqC;QA2CwD,2DAA0B;QAA1B,iGAA0B;QAA3H,oMAAwE;QAGxC,2DAAW;QAAX,wEAAW;QAKhD,2DACJ;QADI,qGACJ;QAaT,2DAA+B;QAA/B,6FAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtJ9C;;;;;;GAMG;AAC8F;AAClC;AAClB;AACQ;AACG;AACI;AACF;AACwB;AAChC;AACS;AACV;AACsE;AAC3C;AACS;AAC5B;AACoB;AACT;AACN;AACG;AACc;AACN;AACL;AACM;AACxB;AACA;AACA;AACC;AACyB;AACG;AACH;AACH;AACb;AACa;AACK;AACR;AACM;AACe;AAC5C;AACS;AACQ;AACU;AACK;AACN;AACX;AACF;AACD;AACC;AACwB;AAC5B;AACc;AACS;AACE;AACJ;AACN;AACa;AACb;AACQ;AACT;AACT;AACgB;AACH;AAClB;AACqB;;;AAE7E,oEAAkB,CAAC,oEAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,yCAAyC;AACzC,oEAAkB,CAAC,oEAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,oEAAkB,CAAC,oEAAQ,EAAE,OAAO,CAAC,CAAC;AAE/B,SAAS,cAAc,CAAC,KAAsB,EAAE,KAA4B;IAC/E,KAAK,CAAC,eAAe,EAAE,CAAC;IACxB,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE;AACtC,CAAC;AAEM,SAAS,wBAAwB,CAAC,KAAsB;IAC3D,OAAO,KAAK,CAAC,iBAAiB,CAAC;AACnC,CAAC;AAED,8DAAc,EAAE,CAAC;AA2GV,MAAM,SAAS;;kEAAT,SAAS;uGAAT,SAAS,cAHN,wDAAY;4GA/Db;QACP;YACI,OAAO,EAAE,wDAAY;YACrB,QAAQ,EAAE,uFAAkB;SAC/B;QACD,+EAAkB;QAClB,gEAAW;QACX,wFAAuB;QACvB,+FAAsB;QACtB,oFAAkB;QAClB,gEAAW;QACX,oFAAsB;QACtB,mFAAqB;QACrB,wEAAe;QACf,oFAAiB;QACjB,kFAAkB;QAClB,qEAAc;QACd,2DAAW;QACX,uEAAgB;QAChB,6DAAK;QACL,+DAAW;QACX,mEAAa;QACb,iEAAY;QACZ,oEAAa;QACb,uFAAsB;QACtB;;;;WAIG;QACH;YACI,OAAO,EAAE,qDAAS;YAClB,IAAI,EAAE,CAAC,uEAAe,CAAC;YACvB,UAAU,EAAE,wEAAgB;SAC/B;QACD;YACI,OAAO,EAAE,2DAAe;YACxB,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,CAAC,uEAAe,EAAE,4FAAqB,CAAC;YAC9C,KAAK,EAAE,IAAI;SACd;QACD;YACI,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,4EAAe;YACzB,KAAK,EAAE,IAAI;SACd;QACD;YACI,OAAO,EAAE,gEAAqB;YAC9B,QAAQ,EAAE,0CAA0C;SACvD;QACD;YACI,OAAO,EAAE,wFAAiB;YAC1B,UAAU,EAAE,wBAAwB;YACpC,IAAI,EAAE,CAAC,uEAAe,CAAC;SAC1B;QACD,uEAAe;QACf,+EAAiB;QACjB,yEAAe;QACf,qFAAoB;QACpB,4FAAqB;QACrB,+EAAkB;QAClB,8EAAkB;KACrB,YApGQ;YACL,+EAAiB;YACjB,qEAAa;YACb,0FAAuB;YACvB,oEAAa;YACb,uFAAmB;YACnB,wFAAqB;YACrB,gGAAsB;YACtB,mEAAgB;YAChB,sFAAoB;YACpB,4DAAW;YACX,yEAAe;YACf,gEAAuB;YACvB,uFAAmB;YACnB,oFAAkB;YAClB,iFAAkB;YAClB,iFAAiB;YACjB,uFAAmB;YACnB,sGAA4B;YAC5B,0DAAU;YACV,qFAAqB;YACrB,0FAAoB;YACpB,yEAAiB;YACjB,4DAAiB;YACjB,kFAA4B,CAAC,gBAAgB,EAAE;gBAC3C,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,8EAAsB,IAAI,yEAAiB;gBACpD,oBAAoB,EAAE,qBAAqB;aAC9C,CAAC;YACF,0FAAoB;YACpB,+FAAqB;YACrB,0FAAoB;YACpB,wEAAc;YACd,mEAAa;SAChB;oIAsEQ,SAAS,mBApEd,wDAAY,aAnCZ,+EAAiB;QACjB,qEAAa;QACb,0FAAuB;QACvB,oEAAa;QACb,uFAAmB;QACnB,wFAAqB;QACrB,gGAAsB;QACtB,mEAAgB;QAChB,sFAAoB;QACpB,4DAAW;QACX,yEAAe;QACf,gEAAuB;QACvB,uFAAmB;QACnB,oFAAkB;QAClB,iFAAkB;QAClB,iFAAiB;QACjB,uFAAmB;QACnB,sGAA4B;QAC5B,0DAAU;QACV,qFAAqB;QACrB,0FAAoB;QACpB,yEAAiB;QACjB,4DAAiB,6EAMjB,0FAAoB;QACpB,+FAAqB;QACrB,0FAAoB;QACpB,wEAAc;QACd,mEAAa;;;;;;;;;;;;;;;;;;;;;ACxHgC;AACgB;;;AAErE;;;;GAIG;AACH,MAAM,MAAM,GAAW;IACnB,EAAC,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,iLAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAC;IAC3G,sGAAsG;IACtG,6GAA6G;IAC7G,8HAA8H;IAC9H,kIAAkI;IAClI,yGAAyG;IACzG,6HAA6H;IAC7H,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,qVAA2C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAC;IACnH,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,6LAAqC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAC;IACxG,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,sUAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,4EAAiB,CAAC,EAAC;IACvI,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,0TAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAC;IAC1F,EAAC,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,qOAAyD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAC;IAChJ,EAAC,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,iNAA+C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAC;IAC5H,0GAA0G;IAC1G,EAAC,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,gOAAuD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,EAAC;IACxJ,EAAC,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,oOAAyD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,EAAC;IAC5J,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,6LAAqC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAC;IACtG,EAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,iMAAuC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,EAAC;IAC7G,0HAA0H;IAC1H,EAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,0TAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAC;IACzF,yHAAyH;IACzH,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,yLAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAC;IACrG,4GAA4G;IAC5G,6GAA6G;IAC7G,wHAAwH;IACxH,8HAA8H;IAC9H,oIAAoI;IACpI,gGAAgG;IAChG,EAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,4OAA6D,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAC;IAChJ,EAAC,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,0YAAqE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,EAAC;IACvK,EAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,8UAAuC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,EAAC;IAC7G,EAAE;IAEF,6BAA6B;IAC7B,+EAA+E;IAC/E,EAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,yLAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAC;IACrG,2DAA2D;IAC3D,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAC;CACzC,CAAC;AAEK,MAAM,mBAAmB,GAAU;IACtC,4EAAiB;CACpB,CAAC;AAOK,MAAM,gBAAgB;;gFAAhB,gBAAgB;6GAAhB,gBAAgB;kHAFd,mBAAmB,YAFrB,CAAC,iEAAoB,CAAC,MAAM,EAAE,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,CAAC,EACnE,yDAAY;mIAGb,gBAAgB,oFAHf,yDAAY;AASnB,MAAM,uBAAuB;IAChC,MAAM,CAAC,OAAO,CAAC,MAAa;QACxB,OAAO;YACH,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,MAAM;SACpB;IACL,CAAC;;8FANQ,uBAAuB;oHAAvB,uBAAuB;wHAHvB,CAAC,gBAAgB,CAAC,EACjB,yDAAY;mIAEb,uBAAuB,cANvB,gBAAgB,aAIf,yDAAY;;;;;;;;;;;;;;;;;;;;;;;AC/D0D;AAGI;;;;;;;;ICDhF,sFAGwB;;;;IAFD,+EAAmB;;;;;IAW9B,wEAAgO;IAAjE,uYAAiC;IAC5L,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;;IARkF,wKAAwE;IAC1J,0DAEA;IAFA,uFAEA;;;IAVhB,yEAAuF;IACnF,yEAAuC;IACnC,yEAAoD;IAChD,uDACJ;IAAA,4DAAM;IAEN,yEAAyC;IACrC,wHAQI;IACR,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAfM,0DACJ;IADI,wHACJ;IAGqN,0DAAa;IAAb,sFAAa;;ADC3O,MAAM,0BAA2B,SAAQ,6DAAY;IAWxD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,MAAc;QAC9B,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,WAAM,GAAN,MAAM,CAAQ;QAVzB,aAAQ,GAAgC,IAAI,CAAC;QAC7C,eAAU,GAAa,IAAI,CAAC;QAG5B,kBAAa,GAAW,CAAC,CAAC;QAC1B,mBAAc,GAAY,IAAI,CAAC;QAE9B,oBAAe,GAAyB,IAAI,uDAAY,EAAU,CAAC;IAK7E,CAAC;IAED,QAAQ;IAER,CAAC;IAED,eAAe,CAAC,KAAa;QAEzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,EACjC;YACI,WAAW,EAAE;gBACT,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,CAAC;aACV;SACJ,CAAC;QAEN,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACjC,CAAC;;oGApCQ,0BAA0B;wHAA1B,0BAA0B;QCfvC,yEAAuH;QACnH,yEAA8B;QAC1B,0JAGwB;QAExB,sHAkBM;QACV,4DAAM;QACV,4DAAM;;QA3B0C,wIAAsE;QAEnE,0DAAW;QAAX,iFAAW;QAKlB,0DAAiD;QAAjD,sJAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;ACPL;AACZ;;;;;;;;;;ICG5D,oEACwC;;;IADD,sPAA+E;;;IAD1H,wEAAgC;IAC5B,kJACwC;IAC5C,qEAAe;;;IAFL,0DAA+B;IAA/B,iIAA+B;;;IAKrC,oEACwC;;;IADD,sPAA+E;;;IAD1H,wEAAgC;IAC5B,kJACwC;IAC5C,qEAAe;;;IAFL,0DAA+B;IAA/B,iIAA+B;;;IAKrC,oEACwC;;;IADD,sPAA+E;;;IAD1H,wEAAgC;IAC5B,kJACwC;IAC5C,qEAAe;;;IAFL,0DAA+B;IAA/B,iIAA+B;;;IAKrC,oEACwC;;;IADD,sPAA+E;;;IAD1H,wEAAgC;IAC5B,kJACwC;IAC5C,qEAAe;;;IAFL,0DAA+B;IAA/B,iIAA+B;;;IAKrC,oEACwC;;;IADD,sPAA+E;;;IAD1H,wEAAgC;IAC5B,kJACwC;IAC5C,qEAAe;;;IAFL,0DAA+B;IAA/B,iIAA+B;;;IAMzC,wEAAgH;IAC5G,uDACJ;IAAA,4DAAI;;;IAF4B,8FAA6B;IACzD,0DACJ;IADI,gGACJ;;;IAEA,wEAA0K;IACtK,uDACJ;IAAA,4DAAI;;;IAF2B,qKAA8B;IAAgB,+GAA0C;IACnH,0DACJ;IADI,gGACJ;;;IAEA,qEAAyH;;;IAA/C,qKAAwC;;;IATtH,yEAAgD;IAC5C,qIAEI;IAEJ,qIAEI;IAEJ,0IAAyH;IAC7H,4DAAM;;;IATE,0DAA0B;IAA1B,6FAA0B;IAI1B,0DAAyB;IAAzB,4FAAyB;IAIvB,0DAA0C;IAA1C,oHAA0C;;;IAtC5D,wEAAoC;IAChC,yEAAyE;IACrE,2EAAoC;IAChC,qJAGe;IAEf,qJAGe;IAEf,qJAGe;IAEf,qJAGe;IAEf,qJAGe;IACnB,qEAAe;IAEf,mIAUM;IACV,4DAAM;IACV,qEAAe;;;IAxCkB,0DAA2C;IAA3C,6GAA2C;IACtD,0DAAqB;IAArB,qFAAqB;IAChB,0DAAe;IAAf,2EAAe;IAKf,0DAAe;IAAf,2EAAe;IAKf,0DAAe;IAAf,2EAAe;IAKf,0DAAe;IAAf,2EAAe;IAKf,0DAAe;IAAf,2EAAe;IAMD,0DAAa;IAAb,gFAAa;;;IAiB1C,mEAAiE;;;IADrE,wEAAwH;IACpH,0JAAiE;IACrE,4DAAI;;;;;IAFsF,uGAA6B;IAAvF,8FAA6B;IAC1C,0DAAiC;IAAjC,kFAAiC;;;IAIhD,mEAAiE;;;IADrE,wEAAkL;IAC9K,0JAAiE;IACrE,4DAAI;;;;;IAF2B,qKAA8B;IAAuF,uGAA6B;IAApG,+GAA0C;IACpG,0DAAiC;IAAjC,kFAAiC;;;IAe5C,0EAAoE;IAChE,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IAEN,uDACJ;;IAAA,4DAAM;;;IADF,0DACJ;IADI,8LACJ;;;IAbJ,0EAA6E;IAKzE,wJAQM;IACV,4DAAM;;;IAT+B,0DAAiC;IAAjC,qGAAiC;;;IAXtE,0EAAS;IACL,wEAAmH;;IAEnH,qEAA+J;IACnK,4DAAU;IAEV,kJAcM;;;IAnBM,0DAAuF;IAAvF,uRAAuF;IAE1F,0DAA6E;IAA7E,mNAA6E;IAG5C,0DAAiC;IAAjC,qGAAiC;;;IAkB3E,wEAAmH;IAC/G,uDACJ;IAAA,4DAAI;;;IAF4B,8FAA6B;IACzD,0DACJ;IADI,gGACJ;;;IAEA,wEAA6K;IACzK,uDACJ;IAAA,4DAAI;;;IAF2B,qKAA8B;IAAgB,+GAA0C;IACnH,0DACJ;IADI,gGACJ;;;IAEA,qEAAoG;;;IAAvC,+JAAgC;;;IA3CzG,wEAA0M;IACtM,0EAA0B;IACtB,gIAEI;IAEJ,gIAEI;IAEJ,gOAsBc;IAEd,0EAAmC;IAC/B,gIAEI;IAEJ,gIAEI;IAEJ,oIAAoG;IACxG,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IA5CH,0DAA0B;IAA1B,6FAA0B;IAI1B,0DAAyB;IAAzB,4FAAyB;IA6BrB,0DAA0B;IAA1B,6FAA0B;IAI1B,0DAAyB;IAAzB,4FAAyB;IAIvB,0DAAoB;IAApB,uFAAoB;;;IAQ1B,0EAAwD;IACpD,wEAAqH;IACrH,wEAAqH;IAErH,qEAAsH;IAC1H,4DAAU;;;IAJ6B,0DAAgF;IAAhF,sNAAgF;IAChF,0DAAgF;IAAhF,sNAAgF;IAE9G,0DAA6E;IAA7E,mNAA6E;;;IAIlF,qEAA4I;;;IAAvI,4LAA+D;;;IASxE,qEAAoG;;;IAAvC,+JAAgC;;;;IApBzG,wEAAwD;IACpD,0EAA0B;IACtB,wEAAyH;IAA5D,iVAA6B;IACtF,4IAKU;IAEV,gOAEc;IAClB,4DAAI;IAEJ,0EAAmC;IAC/B,wEAAoH;IAA9B,iVAA6B;IAC/G,uDACJ;IAAA,4DAAI;IAEJ,oIAAoG;IACxG,4DAAM;IACV,4DAAM;IACV,qEAAe;;;;IArBoF,0DAA6B;IAA7B,sGAA6B;IAArH,6FAA6B;IAClB,0DAAgC;IAAhC,iGAAgC;IAavC,0DAA6B;IAA7B,6FAA6B;IAC5B,0DACJ;IADI,+FACJ;IAEM,0DAAoB;IAApB,uFAAoB;;;IAU1B,wEAA8D;IAC1D,uDACJ;IAAA,4DAAI;;;IAF4B,8FAA6B;IACzD,0DACJ;IADI,4GACJ;;;IACA,wEAAwH;IACpH,uDACJ;IAAA,4DAAI;;;IAF2B,qKAA8B;IAAgB,+GAA0C;IACnH,0DACJ;IADI,4GACJ;;;IAVZ,wEAAqD;IACjD,0EAA0B;IACtB,sEAAK;IAAA,uDAAqD;;IAAA,4DAAM;IAChE,sEAAK;IAAA,uDAAsB;IAAA,4DAAM;IACjC,sEAAK;IACD,gIAEI;IACJ,gIAEI;IACR,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAXF,0DAAqD;IAArD,0LAAqD;IACrD,0DAAsB;IAAtB,0FAAsB;IAEnB,0DAA0B;IAA1B,6FAA0B;IAG1B,0DAAyB;IAAzB,4FAAyB;;AD/GlC,MAAM,wBAAyB,SAAQ,6DAAY;IAWtD,YAAmB,OAAoB,EAAE,KAAsB;QAC3D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAP9B,mBAAc,GAAY,IAAI,CAAC;QAE9B,kBAAa,GAA6B,IAAI,uDAAY,EAAc,CAAC;QAEnF,iBAAY,GAAO,EAAE,CAAC;QAKlB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IAED,QAAQ;QAEJ,IAAI,CAAC,YAAY,GAAG;YAChB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YAC3B,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACjC,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACtC,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACtC,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACtC,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;SACjD,CAAC;IACN,CAAC;IAED,WAAW,CAAC,EAAO;QACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;;gGA9BQ,wBAAwB;sHAAxB,wBAAwB;QCbrC,sIAyCe;QAEf,uIA8Ce;QAEf,uIAuBe;QAEf,uIAae;;QAjIA,qFAAmB;QA2CnB,0DAAyL;QAAzL,oRAAyL;QAgDzL,0DAAuC;QAAvC,2GAAuC;QAyBvC,0DAAoC;QAApC,sGAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;ACpHyB;;;;;;;;;;;;ICI5D,wEAAmJ;IAAtC,sTAAS,4BAAqB,KAAK,CAAC,IAAC;IAC9I,uDACJ;IAAA,4DAAI;;;;IAF0B,gLAAwC;IAClE,0DACJ;IADI,yFACJ;;;;IAEA,wEAA8L;IAA9F,uTAAS,6BAAqB,KAAK,CAAC,IAAC;IACjI,uDACJ;IAAA,4DAAI;;;IAFyB,8JAA4B;IAA4F,wGAAwC;IACzL,0DACJ;IADI,yFACJ;;;IAGI,qEAAsH;;;IAA7C,8JAAsC;;;IAG3G,0EAA2D;IACvD,wEAAkI;;IAElI,qEAA6J;IACjK,4DAAU;;;;IAHE,0DAAsG;IAAtG,8RAAsG;IAEzG,0DAA0F;IAA1F,0NAA0F;;;;IAK3G,wEAAoL;IAAtC,uTAAS,6BAAqB,KAAK,CAAC,IAAC;IAC/K,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;;IAR0B,gLAAwC;IAClE,0DAEA;IAFA,gHAEA;;;IAOJ,wEAAyL;IACrL,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;;IARyB,8JAA4B;IAAuF,wGAAwC;IACpL,0DAEA;IAFA,gHAEA;;;IAlCR,yEAAuF;IACnF,qIAEI;IAEJ,qIAEI;IAEJ,yEAAsD;IAClD,yIAAsH;IAEtH,yEAA2C;IACvC,iJAIU;IACd,4DAAM;IACV,4DAAM;IAEN,sIAQI;IAEJ,sIAQI;IACR,4DAAM;;;IAvCE,0DAAwB;IAAxB,uFAAwB;IAIxB,0DAAuB;IAAvB,sFAAuB;IAK0B,0DAAsB;IAAtB,qFAAsB;IAGzD,0DAA+C;IAA/C,iHAA+C;IAQ7D,0DAAwB;IAAxB,uFAAwB;IAUxB,0DAAuB;IAAvB,sFAAuB;;;IAlC3C,wEAA2C;IACvC,yEAA+B;IAC3B,yEAAmC;IAC/B,mIAwCM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IA3CoB,0DAA+B;IAA/B,gHAA+B;;ADU3D,MAAM,wBAAyB,SAAQ,6DAAY;IAMtD,YAAmB,OAAoB,EAAE,KAAsB;QAC3D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAF9B,eAAU,GAAW,CAAC,CAAC;IAIhC,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE;gBAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACtB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;oBAC5D,CAAC,CAAC;iBACL;aACJ;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE;gBACtB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACtB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;oBACxD,CAAC,CAAC;iBACL;aACJ;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,aAAa,EAAE;gBAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACtB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;oBAC/D,CAAC,CAAC;iBACL;aACJ;SACJ;IACL,CAAC;IAED,MAAM,CAAC,SAAiB;QACpB,IAAI,GAAG,CAAC;QACR,IAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAC;YACxB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;SACvG;aAAK,IAAG,IAAI,CAAC,KAAK,IAAI,MAAM,EAAC;YAC1B,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;SAClG;aAAK,IAAG,IAAI,CAAC,KAAK,IAAI,aAAa,EAAC;YACjC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;SACzG;aAAI;YACD,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC;SAClE;QACD,OAAO,GAAG,CAAC;IACf,CAAC;;gGAhDQ,wBAAwB;sHAAxB,wBAAwB;QCbrC,sIA8Ce;;QA9CA,yHAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmC;AAInC;AAEZ;;;;;;;;;ICN7B,yEAAsD;IAClD,yEAAuB;IACnB,wEAAsE;IAClE,uDACJ;IAAA,4DAAK;IAEL,iFAAmF;IACvF,4DAAM;IACV,4DAAM;;;IALM,0DACJ;IADI,oHACJ;IAEkB,0DAAqB;IAArB,qFAAqB;;ADWxC,MAAM,2BAA4B,SAAQ,6DAAY;IAiBzD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,IAAgB,EAAU,SAAuB;QACjE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,SAAI,GAAJ,IAAI,CAAY;QAAU,cAAS,GAAT,SAAS,CAAc;QAP5D,0BAAqB,GAAW,CAAC,CAAC;QAI3C,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAKjD,CAAC;IAlBD,IAAa,SAAS,CAAC,KAAa;QAChC,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO;SACV;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAaO,WAAW,CAAC,EAAU;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,uBAAuB,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAE3F,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACtB,IAAI,CAAC,CAAC,UAAU;wBAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,CAAC,CAAC,UAAU,CAAC,CAAC;gBAClG,CAAC,CAAC;aACL;QACL,CAAC,CAAC,CAAC;IACX,CAAC;;sGAlCQ,2BAA2B;yHAA3B,2BAA2B;QCjBxC,uHAQM;;QARsB,yHAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwB;AAKxC;;;;;;;;;ICDpB,sFAA+J;;;;IAAlG,iGAAiC;;;IAJ9G,wEAA8C;IAC1C,yEAAuB;IACnB,yEAAgD;IAC5C,yEAA8B;IAC1B,mKAA+J;IACnK,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAJ4C,0DAAgB;IAAhB,yFAAgB;;;IAS/D,sFAA+J;;;;IAAlG,iGAAiC;;;;IAGlG,yEAAuD;IACnD,yEAAwB;IACpB,wEAA8E;IAC1E,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;IACV,4DAAM;;;IAVK,0DAAmC;IAAnC,wKAAmC;IAClC,0DAEA;IAFA,0GAEA;;;IAXpB,wEAAsF;IAClF,yEAAgG;IAC5F,yEAA8B;IAC1B,mKAA+J;IACnK,4DAAM;IAEN,+HAYM;IACV,4DAAM;IACV,qEAAe;;;IAnBe,0DAAqE;IAArE,qIAAqE;IAE5C,0DAAgB;IAAhB,yFAAgB;IAG3B,0DAAiB;IAAjB,oFAAiB;;;IAgB7D,wEAAwE;IACpE,0EAAuB;IACnB,0EAA2B;IACvB,0EAAiD;IAC7C,uFAA+G;IAC/G,uFAA+G;IACnH,4DAAM;IAEN,0EAAkD;IAC9C,uFAA+G;IAC/G,uFAA+G;IAC/G,uFAA+G;IACnH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAXwB,0DAA4B;IAA5B,4FAA4B;IAC5B,0DAA4B;IAA5B,4FAA4B;IAI5B,0DAA4B;IAA5B,4FAA4B;IAC5B,0DAA4B;IAA5B,4FAA4B;IAC5B,0DAA4B;IAA5B,4FAA4B;;AD3B5D,MAAM,oBAAqB,SAAQ,6DAAY;IAelD,YAAmB,OAAoB,EAAE,KAAsB,EAAU,UAA0B;QAC/F,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAkC,eAAU,GAAV,UAAU,CAAgB;QAb1F,aAAQ,GAAY,IAAI,CAAC;QAEzB,aAAQ,GAAgC,IAAI,CAAC;QAC7C,gBAAW,GAAY,KAAK,CAAC;QAE7B,mBAAc,GAAY,IAAI,CAAC;QAE/B,cAAS,GAAW,IAAI,CAAC;QACzB,0BAAqB,GAAW,CAAC,CAAC;IAO3C,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;SACvD;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;SACtC;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAEO,oBAAoB,CAAC,SAAiB;QAC1C,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC;aAC1C,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE;gBACrI,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;aACxG;QACL,CAAC,CAAC,CAAC;IACX,CAAC;;wFA5CQ,oBAAoB;kHAApB,oBAAoB;QChBjC,kIAQe;QAEf,kIAoBe;QAEf,oIAee;;QA/CA,6FAA6B;QAU7B,0DAAqE;QAArE,6IAAqE;QAsBrE,0DAAuD;QAAvD,+JAAuD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BzB;AAEI;AACa;AACjB;AAC0B;AACA;AACT;AACe;AACF;AACG;;AA4BvE,MAAM,iBAAiB;;kFAAjB,iBAAiB;8GAAjB,iBAAiB;mHALf;QACP,4DAAc;KACjB,YAtBQ;YACL,yDAAY;YACZ,0DAAY;YACZ,wEAAiB;YACjB,qFAAoB;SACvB;mIAoBQ,iBAAiB,mBAlBtB,yEAAoB;QACpB,kFAAwB;QACxB,kFAAwB;QACxB,wFAA2B;QAC3B,sFAA0B,aAV1B,yDAAY;QACZ,0DAAY;QACZ,wEAAiB;QACjB,qFAAoB,aAUpB,yEAAoB;QACpB,kFAAwB;QACxB,kFAAwB;QACxB,wFAA2B;QAC3B,sFAA0B;;;;;;;;;;;;;;;;;;;;;;;;;AChC+C;AACN;AAG9C;AACY;;;;;;;;;ICHjC,wEAA6D;IACzD,uEAA2D;IACvD,uDACJ;IAAA,4DAAI;IACR,4DAAK;;;IAHE,0DAA+B;IAA/B,gKAA+B;IAC9B,0DACJ;IADI,2FACJ;;;;IAJR,wEAAyD;IACrD,uHAIK;IAEL,wEAA4B;IACxB,uEAAyD;IAAA,uDAA+B;IAAA,4DAAI;IAChG,4DAAK;IACT,4DAAK;;;IATuB,0DAAW;IAAX,oFAAW;IAOJ,0DAA6B;IAA7B,6IAA6B;IAAC,0DAA+B;IAA/B,mGAA+B;;ADM7F,MAAM,wBAAyB,SAAQ,6DAAY;IAOtD,YAAmB,OAAoB,EAAE,KAAsB,EAAU,IAAgB;QACrF,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAkC,SAAI,GAAJ,IAAI,CAAY;QAJ/E,eAAU,GAA0B,IAAI,uDAAY,EAAW,CAAC;QAE1E,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAIjD,CAAC;IAED,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,8BAA8B,CAAC;aAC/D,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CACN,GAAG,CAAC,EAAE;YACF,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9B;QACL,CAAC,EACD,GAAG,EAAE;YACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CACJ,CAAC;IACV,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;gGAlCQ,wBAAwB;sHAAxB,wBAAwB;QCfrC,yEAAuB;QACnB,kHAUK;QACT,4DAAM;;QAXG,0DAA0B;QAA1B,yHAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAyC;AAK/C;;;;;;;;;;;ICDT,8EAA6E;IACzE,wEAA+G;IAC/G,wEAA+G;IAE/G,qEAA+I;IACnJ,4DAAU;;;;IAJ6B,0DAAyE;IAAzE,yMAAyE;IACzE,0DAAyE;IAAzE,yMAAyE;IAEvG,0DAAsE;IAAtE,sMAAsE;;;IAI3E,qEAA2J;;;;IAAtJ,2LAA+D;;;IAXpF,wEAA+C;IAC3C,uEAAsD;IAClD,yEAAyC;IACrC,uIAKU;IAEV,2NAEc;IAClB,4DAAM;IAEN,yEAAwC;IACpC,yEAA+C;IAC3C,uDACJ;IAAA,4DAAM;IAEN,oEAAuE;IAEvE,2EAAgC;IAC5B,wDACJ;IAAA,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,qEAAe;;;;;IA1BR,0DAA6B;IAA7B,yFAA6B;IAEc,0DAAyB;IAAzB,sFAAyB;IAc3D,0DACJ;IADI,2FACJ;IAEgC,0DAAgC;IAAhC,0JAAgC;IAG5D,0DACJ;IADI,2GACJ;;ADXb,MAAM,oBAAqB,SAAQ,6DAAY;IAOlD,YAAmB,OAAoB,EAAU,MAAsB,EAAE,KAAsB,EAC3E,SAAuB;QACvC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAU,WAAM,GAAN,MAAM,CAAgB;QACnD,cAAS,GAAT,SAAS,CAAc;QAJ3C,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAO7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IAEO,gBAAgB,CAAC,KAAkC;QACvD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACzB,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,eAAe,CAAC,KAA2B;QAC/C,MAAM,GAAG,GAAG,KAAK,CAAC;QAClB,IAAI,GAAG,CAAC,UAAU;YAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACtG,OAAO,GAAG,CAAC;IACf,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,OAAO;QACX,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;aAChB,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACX,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;wFA1CQ,oBAAoB;kHAApB,oBAAoB;QCfjC,yEAA0B;QACtB,yEAA8B;QAC1B,mIA2Be;QACnB,4DAAM;QACV,4DAAM;;QA7BoC,0DAAW;QAAX,iFAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;ACER;AACa;AACf;AACyB;AACG;AAC1B;AACI;AAC6B;AAChB;;;AAyBvD,MAAM,aAAa;;0EAAb,aAAa;0GAAb,aAAa;+GALX;QACP,4DAAc;KACjB,YAlBQ;YACL,8EAAiB;YACjB,yDAAY;YACZ,uDAAW;YACX,qFAAoB;YACpB,yDAAY;YACZ,8EAAwB,EAAE;SAC7B;mIAcQ,aAAa,mBAZlB,kFAAwB;QACxB,yEAAoB,aATpB,8EAAiB;QACjB,yDAAY;QACZ,uDAAW;QACX,qFAAoB;QACpB,yDAAY,qFAQZ,kFAAwB;QACxB,yEAAoB;;;;;;;;;;;;;;;;;;;ACnB5B;;;AAMM,MAAOC,cAAP,CAAqB;AAOvBC,cAAoBC,IAApB,EAAoC;AAAhB;AALX,sBAAqB,CAAC,CAAtB;AAED,wCAAwC,KAAxC;AACA,yBAA+D,IAAIH,8CAAJ,EAA/D;AAGP;;AAEDI,YAAU,CAACC,EAAD,EAAW;AACjB,WAAO,KAAKF,IAAL,CAAUG,GAAV,CAA+B,eAAeD,EAAE,EAAhD,CAAP;AACH;;AAEDE,gBAAc,CAACF,EAAD,EAAoB;AAC9B,WAAO,KAAKF,IAAL,CAAUG,GAAV,CAAc,0BAA0BD,EAAE,EAA1C,CAAP;AACH;;AAEDG,SAAO;AACH,WAAO,KAAKL,IAAL,CAAUG,GAAV,CAA2C,kBAA3C,CAAP;AACH;;AAEDG,mBAAiB;AACb;AACA,QAAI,CAAC,KAAKC,4BAAV,EAAwC;AACpC,WAAKA,4BAAL,GAAoC,IAApC;AACA,UAAIC,GAAG,GAAG,KAAKR,IAAL,CAAUG,GAAV,CAA+C,gCAA/C,EACLM,SADK,CAEDC,GAAD,IAAQ;AACJ,aAAKC,aAAL,CAAmBC,IAAnB,CAAwBF,GAAxB;;AACA,aAAKC,aAAL,CAAmBE,QAAnB;;AACAL,WAAG,CAACM,WAAJ;AACH,OANC,CAAV;AAQH;;AACD,WAAO,KAAKH,aAAZ;AACH;;AAEDI,eAAa;AACT,WAAO,KAAKf,IAAL,CAAUG,GAAV,CAAiC,4BAAjC,CAAP;AACH;;AAEDa,sBAAoB,CAACC,SAAD,EAAkB;AAClC,WAAO,KAAKjB,IAAL,CAAUG,GAAV,CAAoC,qCAAqCc,SAAzE,CAAP;AACH;;AAEDC,wBAAsB,CAACC,GAAD,EAAwB;AAC1C,WAAO,KAAKnB,IAAL,CAAUoB,IAAV,CAAoD,gCAApD,EAAsFD,GAAtF,CAAP;AACH;;AAhDsB;;;mBAAdrB,gBAAcuB,+DAAAA,CAAAA,4DAAAA;AAAA;;;QAAdvB;AAAcwB;AAAAC;AAAA;;;SAAdzB;AAAc0B,WAAd1B,cAAc;;;;;;;;;;;;;;;;;;;;;AChB2B;;;;;;ICAlD,oEAGM;;;;IAFD,+UAAyG;;;IAK1G,yEAA8D;IAC1D,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,8GACJ;;;IATR,wEAAyD;IACrD,gIAGM;IAEN,4NAIc;IAClB,qEAAe;;;;IAVL,0DAAoC;IAApC,2IAAoC;;;IAY9C,wEAAsD;IAClD,yEAAgE;IAC5D,uDACJ;IAAA,4DAAM;IACV,qEAAe;;;IAFP,0DACJ;IADI,+IACJ;;;IAIA,oEAGM;;;;IAFD,kUAA4F;;;IAK7F,yEAA8D;IAC1D,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,8GACJ;;;IATR,wEAAkD;IAC9C,gIAGM;IAEN,4NAIc;IAClB,qEAAe;;;;IAVL,0DAAoC;IAApC,2IAAoC;;ADPvC,MAAM,qBAAsB,SAAQ,6DAAY;IAkBnD,YAAmB,OAAoB,EAAS,KAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAHtE,iBAAY,GAAW,EAAE,CAAC;QAC1B,qBAAgB,GAAW,EAAE,CAAC;IAI9B,CAAC;IAfD,IAAa,YAAY,CAAC,KAAyB;QAC/C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IASO,eAAe;QACnB,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;YACnC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC/C;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,mBAAmB;QACvB,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE;YACvC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;SACnD;QACD,OAAO,GAAG,CAAC;IACf,CAAC;;0FApCQ,qBAAqB;mHAArB,qBAAqB;QCblC,mIAWe;QAEf,mIAIe;QAEf,mIAWe;;QA9BA,yGAAyC;QAazC,0DAAqC;QAArC,uGAAqC;QAMrC,0DAAiC;QAAjC,mGAAiC;;;;;;;;;;;;;;;;;;;;AClBH;AACkB;;AAiBxD,MAAM,kBAAkB;;oFAAlB,kBAAkB;+GAAlB,kBAAkB;oHAJhB,EACV,YAXQ;YAEL,yDAAY;SACf;mIAWQ,kBAAkB,mBATvB,0EAAqB,aAHrB,yDAAY,aAMZ,0EAAqB;;;;;;;;;;;;;;;;;;;;ACbwC;AACf;;;;AAW/C,MAAM,qBAAsB,SAAQ,6DAAY;IAwBnD,YAAmB,OAAoB,EAAS,KAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QArB7D,eAAU,GAAW,CAAC,CAAC;QAEtB,cAAS,GAA0B,IAAI,uDAAY,EAAW,CAAC;QAC/D,eAAU,GAAsB,IAAI,uDAAY,EAAO,CAAC;IAoBlE,CAAC;IAhBD,IAAI,MAAM,CAAC,KAAe;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;IACL,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;;0FAtBQ,qBAAqB;mHAArB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;ACXW;AACmB;AACV;AACwB;AACV;AACN;AACA;AACA;;;AAuBvD,MAAM,kBAAkB;;oFAAlB,kBAAkB;+GAAlB,kBAAkB;mHApBpB;YACP,yDAAY;YACZ,0EAAsB,EAAE;YACxB,qFAAoB;YACpB,wEAAiB;SAClB;mIAeU,kBAAkB,mBAbvB,2EAAqB;QACrB,+EAAuB;QACvB,yEAAoB;QACpB,yEAAoB,aATxB,yDAAY,sEAEZ,qFAAoB;QACpB,wEAAiB,aASb,2EAAqB;QACrB,+EAAuB;QACvB,yEAAoB;QACpB,yEAAoB;;;;;;;;;;;;;;;;;;;;;;;;;AC1BoC;AAO5B;;;;;;;;;;ICFZ,oEAA+I;;;IAA3E,8KAAoE;;;IAExI,oEAAiF;;;IAAzC,4JAAkC;;;;IAJlF,wEAA2C;IACvC,uEAAgH;IAA5D,4dAA2D;IAC3G,uJAA+I;IAE/I,uJAAiF;IACrF,4DAAI;IACR,qEAAe;;;IALmB,0DAAqB;IAArB,0FAAqB;IACzC,0DAAiC;IAAjC,gGAAiC;IAEjC,0DAAgC;IAAhC,+FAAgC;;;IAK1C,oEAA+I;;;IAA3E,8KAAoE;;;IAExI,oEAAiF;;;IAAzC,4JAAkC;;;IAH9E,wEAA4C;IACxC,uJAA+I;IAE/I,uJAAiF;IACrF,qEAAe;;;IAHL,0DAAiC;IAAjC,gGAAiC;IAEjC,0DAAgC;IAAhC,+FAAgC;;;IAZ9C,yEAA0F;IACtF,0JAMe;IAEf,0JAIe;IACnB,4DAAM;;;IAdsD,qFAA6B;IACtE,0DAA0B;IAA1B,yFAA0B;IAQ1B,0DAA2B;IAA3B,0FAA2B;;;IAZ1D,wEAA6B;IACzB,yEAAyB;IACrB,yEAA8C;IAC1C,kIAcM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAjB8C,0DAAS;IAAT,kFAAS;;ADgB/D,MAAM,uBAAwB,SAAQ,2EAAqB;IAK9D,YAAY,OAAoB,EAAE,KAAsB,EAAU,IAAgB,EAAU,MAAc,EACtF,SAAuB;QACvC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFwC,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QACtF,cAAS,GAAT,SAAS,CAAc;QAH3C,0BAAqB,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,GAAG,4BAA4B,CAAC;IAKrG,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YACrB,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE;gBAE7D,IAAI;oBACA,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;iBACzC;gBAAC,MAAM;iBACP;gBACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC5B;SACJ;IACL,CAAC;IAEO,iBAAiB;QAErB,IAAI,GAAG,GAAG,cAAc,IAAI,CAAC,QAAQ,QAAQ,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,GAAG,CAAC;aAChC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,uBAAuB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;iBACjH,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;iBACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEN,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;gBAClB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,IAAI,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC9E,IAAI,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrG,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,YAAY,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC,EAAE,GAAG,CAAC,CAAC;YACZ,CAAC,CAAC;QACV,CAAC,CAAC;IACV,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,WAAoB;QACxC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC,WAAW,EAAE;YACd,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;gBAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;;gBAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9C,CAAC,CAAC;SACL;aAAM;YACH,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAC1F;gBACD,wDAAwD;gBACxD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC9E;SACJ;IACL,CAAC;IAEO,UAAU;QACd,CAAC,UAAU,KAAa;YACpB,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC;gBACvB,cAAc,EAAE,IAAI;gBACpB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,KAAK;gBACpB,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,kNAAkN;gBAC7N,SAAS,EAAE,kNAAkN;aAChO,CAAC;iBACG,EAAE,CAAC,aAAa,EAAE,UAAU,CAAM,EAAE,KAAU;gBAC3C,IAAI,SAAS,GAAG,CAAC,CAAC,wBAAwB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrF,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,CAAC;;8FAtFQ,uBAAuB;qHAAvB,uBAAuB;QCnBpC,qIAoBe;;QApBA,4EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCqC;AAO5B;AACqB;;;;;;;;;;;;ICRrD,oEAA6D;;;IAIrD,0EAAiD;IAC7C,wEAA+H;;IAC/H,wEAAyJ;;IACzJ,wEAAkI;;IAElI,qEAA+I;IACnJ,4DAAU;;;IAL6B,0DAAwE;IAAxE,oQAAwE;IAChD,0DAA0E;IAA1E,sQAA0E;IACjG,0DAA0E;IAA1E,uQAA0E;IAEzG,0DAA8D;IAA9D,kMAA8D;;;;IAa/D,0EAAiE;IAC7D,wEAA8G;IAAhF,6UAA2B,CAAC,gBAAa;IACnE,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;;;IARE,0DAEA;IAFA,wGAEA;;;;IAxBxB,wEAA6B;IACzB,yEAAiC;IAC7B,wIAMU;IACd,4DAAM;IAEN,yEAAgC;IAC5B,yEAAuB;IACnB,yEAA8B;IAC1B,mEAEK;IAEL,oEAAgF;IAEhF,gIAUM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,wEAA0H;IAArD,8TAA0B,wBAAwB,KAAE;IACrH,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAoH;IACxH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,qEAAe;;;IA1CG,0DAAqC;IAArC,wGAAqC;IAYP,0DAA6B;IAA7B,2JAA6B;IAI7B,0DAAyC;IAAzC,qKAAyC;IAEnE,0DAA2B;IAA3B,8FAA2B;IAgBzC,0DAEA;IAFA,iHAEA;;ADrBL,MAAM,oBAAqB,SAAQ,2EAAqB;IAI3D,YAAY,OAAoB,EAAE,KAAsB,EACpC,IAAgB,EAAU,MAAc,EACxC,SAAuB;QACvC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAE,CAAC;QAFP,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QACxC,cAAS,GAAT,SAAS,CAAc;QAJ3C,sBAAiB,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;IAMvF,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAEO,SAAS;QAEb,IAAI,GAAG,GAAG,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,GAAG,CAAC;aAChC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAsB,EAAE,EAAE;YAClC,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC,EAAE,CAAC,CAAC,CAAC;YAEN,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrG,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACV,CAAC;IAED,UAAU,CAAC,GAAW;QAClB,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;YAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;;YAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC9C,CAAC,CAAC;IACN,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC1B,+EAA2B,CAAC,KAAK,CAAC,CAAC;IAEvC,CAAC;;wFA5CQ,oBAAoB;kHAApB,oBAAoB;QCpBjC,yEAA0B;QACtB,gHAA6D;QAE7D,mIA4Ce;QACnB,4DAAM;;QA/CsC,0DAAa;QAAb,6EAAa;QAEtC,0DAAY;QAAZ,4EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFiC;AAO5B;;;;;;;;;;;;;ICWR,wEAAyK;IAA3E,keAAsD;IAChJ,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IARiJ,+EAAmB;IACpK,0DAEA;IAFA,gGAEA;;;IAjBZ,wEAAkD;IAC9C,0EAAS;IACL,uEAAyH;;IACzH,uEAAkJ;;IAClJ,uEAA2H;;IAE3H,oEAA+K;IACnL,4DAAU;IAEV,0EAAmC;IAC/B,2EAA4C;IACxC,wDACJ;IAAA,4DAAM;IAEN,4JAQI;IACR,4DAAM;IACV,qEAAe;;;;IAtB4B,0DAAkE;IAAlE,0PAAkE;IAC1C,0DAAmE;IAAnE,4PAAmE;IAC1F,0DAAmE;IAAnE,4PAAmE;IAElG,0DAAyD;IAAzD,uLAAyD;IAK1D,0DACJ;IADI,0FACJ;IAEI,0DAAuB;IAAvB,sFAAuB;;;IAYnC,qEAAiF;;;IAAzC,4JAAkC;;;IA3B9E,wEAA2C;IACvC,kKAwBe;IAEf,8IAAiF;IAErF,qEAAe;;;IA5BI,0DAAiC;IAAjC,gGAAiC;IA0B1C,0DAAgC;IAAhC,+FAAgC;;;IA/B1D,wEAAqC;IACjC,yEAA0B;IACtB,yEAAuB;IACnB,yEAA8C;IAC1C,iJA6Be;IACnB,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAjCiC,0DAAS;IAAT,kFAAS;;ADelD,MAAM,oBAAqB,SAAQ,2EAAqB;IAI3D,YAAY,OAAoB,EAAE,KAAsB,EACpC,IAAgB,EAAU,MAAc,EACxC,SAAuB;QACvC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAE,CAAC;QAFP,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QACxC,cAAS,GAAT,SAAS,CAAc;QAJ3C,oBAAe,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;IAMrF,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAEO,SAAS;QAEb,IAAI,GAAG,GAAG,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,GAAG,CAAC;aAChC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAsB,EAAE,EAAE;YAClC,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC,EAAE,CAAC,CAAC,CAAC;YAEN,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ;oBAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;aAClI;QACL,CAAC,CAAC;IACV,CAAC;IAGD,UAAU,CAAC,GAAW,EAAE,WAAoB;QACxC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,IAAI,CAAC,WAAW,EAAE;YACd,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;gBAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;;gBAClE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9C,CAAC,CAAC;SACL;aAAM;YACH,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iBAC1F;gBACD,wDAAwD;gBACxD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC9E;SACJ;IACL,CAAC;;wFAjDQ,oBAAoB;kHAApB,oBAAoB;QCnBjC,kIAqCe;;QArCA,+GAAoB;;;;;;;;;;;;;;;;;;;;;;;;ACKN;AAEY;;;;;;;ICHzB,wEAA4B;IACxB,uEAAkI;IAC9H,yEAA8B;IAC1B,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAI;IAEJ,+DAAiC;IAAjC,0EAAiC;IAC7B,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA8G;IAClH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAjBR,0DAAyD;IAAzD,0HAAyD;;;IAmBhE,wEAAsC;IAClC,wEAAqH;IACjH,uDACJ;;IAAA,4DAAI;IAEJ,0EAAiC;IAC7B,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA8G;IAClH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAXR,0DAAyD;IAAzD,0HAAyD;IACxD,0DACJ;IADI,8JACJ;;;IAWJ,0EAA8C;IAC1C,uDACJ;;IAAA,4DAAM;;;IADF,0DACJ;IADI,8JACJ;;;IArCJ,wEAAqF;IACjF,uJAkBe;IAEf,sJAYe;IAEf,oIAEM;IACV,qEAAe;;;;IArCI,0DAAW;IAAX,0EAAW;IAoBX,0DAAqB;IAArB,uFAAqB;IAc9B,0DAAU;IAAV,yEAAU;;;IAtChC,yEAA6I;IACzI,yEAAuB;IACnB,yEAA4B;IACxB,uIAsCe;IACnB,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IA5CkB,4IAAoE;IAGnD,0DAAmB;IAAnB,0FAAmB;;ADiBrD,MAAM,mBAAmB;IAO5B,YAAY,OAAoB;QAFhC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAG7C,OAAO,CAAC,iBAAiB;aACpB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,CAAC,EAAE;YAEb,IAAG,CAAC,GAAG,EAAC;gBACJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,cAAc,GAAC,IAAI,CAAC;gBACzB,OAAO;aACV;YAED,IAAI,IAAI,GAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,EAAC,CAAC;YAC7E,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC;YAE7B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAW,CAAC;gBAChB,IAAI,KAAa,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACrB,KAAK,GAAG,GAAG,CAAC;iBACf;qBACI;oBACD,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;iBACpD;gBAED,IAAI,IAAI,CAAC,YAAY,EAAE;oBACnB,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;iBACjF;qBAAM;oBAEH,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;iBAC5C;gBACD,IAAI,OAAO,GAAmB;oBAC1B,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;iBAChC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;YACrC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACV,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;sFAvDQ,mBAAmB;iHAAnB,mBAAmB;QCpBhC,+GA4CM;;QA5CwF,iHAA6C;;;;;;;;;;;;;;;;;;;;;;;ACI9F;AACc;AACd;AACiB;AACgB;;AAQvE,MAAM,iBAAiB;;kFAAjB,iBAAiB;8GAAjB,iBAAiB;kHALjB,CAAC,yDAAY,EAAE,yDAAY,EAAE,wEAAiB,EAAC,qFAAoB,CAAC;mIAKpE,iBAAiB,mBAJX,sEAAmB,aADxB,yDAAY,EAAE,yDAAY,EAAE,wEAAiB,EAAC,qFAAoB,aAElE,sEAAmB;;;;;;;;;;;;;;;;;;;;;;;;ACRqB;AAIO;;;;;;;;ICEjD,wEAAmE;IAC/D,yEAA+B;IAC3B,uDACJ;;IAAA,4DAAM;IAEN,yEAA8B;IAC1B,uDACJ;;IAAA,4DAAM;IACV,qEAAe;;;IANP,0DACJ;IADI,uLACJ;IAGI,0DACJ;IADI,0SACJ;;;IAIA,yEAA+B;IAAA,4DAAC;IAAA,4DAAM;IAEtC,yEAA8B;IAC1B,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,mGACJ;;;ADRT,MAAM,sBAAuB,SAAQ,6DAAY;IAMpD,YAAmB,OAAoB,EAAS,KAAsB,EACnD,OAAoB;QACnC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QACnD,YAAO,GAAP,OAAO,CAAa;QAHvC,mBAAc,GAAW,OAAO,CAAC;QAM7B,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACtH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACjE,CAAC;IAED,cAAc,CAAC,UAAkB;QAC7B,IAAI,GAAG,GAA0B;YAC7B,EAAE,EAAE,UAAU;SACjB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,IAAY;QACxB,OAAO,CAAC,wEAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;;4FAxBQ,sBAAsB;oHAAtB,sBAAsB;QClBnC,yEAAuB;QACnB,uEAA2D;QACvD,yEAA6B;QACzB,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAA6G;QACjH,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAA4B;QAA5B,yEAA4B;QACxB,qIAQe;QAEf,8MAMc;QAClB,4DAAM;QACV,4DAAI;QACR,4DAAM;;;QA7BC,0DAA+B;QAA/B,6IAA+B;QAUX,0DAAoC;QAApC,sKAAoC;;;;;;;;;;;;;;;;;;;;;;;ACPlB;AACA;AACqB;AACY;AAChB;;AAcvD,MAAM,mBAAmB;;sFAAnB,mBAAmB;gHAAnB,mBAAmB;oHAVnB;YACL,yDAAY;YACZ,qFAAoB;YACpB,yDAAY;YACZ,wEAAiB;SACpB;mIAKQ,mBAAmB,mBAJb,6EAAsB,aALjC,yDAAY;QACZ,qFAAoB;QACpB,yDAAY;QACZ,wEAAiB,aAGX,6EAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBkB;AAIzB;AAIgC;;;;;;;;;;;;;AAUtD,MAAM,wBAAyB,SAAQ,6DAAY;IAWtD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,MAA6C,EAC7C,SAA2B;QAE3C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAJP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,WAAM,GAAN,MAAM,CAAuC;QAC7C,cAAS,GAAT,SAAS,CAAkB;QAR/C,iBAAY,GAAW,CAAC,CAAC;QACzB,mBAAc,GAAW,OAAO,CAAC;QACjC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAEjD,QAAG,GAAW,EAAE,CAAC;QAQb,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1C,IAAI,CAAC,GAAG,GAAG,wEAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACrF;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAE1H,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACvB,IAAI,IAAI,CAAC,SAAS;gBAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SACzB;IACL,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;gGA1CQ,wBAAwB;uHAAxB,wBAAwB;QCnBrC,0EAAwB;QACpB,0EAA+B;QAC3B,wEAC2G;QAAjE,4IAAS,wBAAoB,IAAC;QACpE,2EAAS;QACL,wEAA4I;;QAC5I,qEAAyK;QAC7K,6DAAU;QACd,6DAAI;QAEJ,0EAAiC;QAC7B,wEAAuJ;QAA/B,4IAAS,wBAAoB,IAAC;QAClJ,wDACJ;QAAA,6DAAI;QAEJ,sEACM;QAEN,sEAEM;;QACV,6DAAM;QACV,6DAAM;QAEN,2EAAiC;QAC7B,0EAAkG;QAApE,6IAAS,wBAAoB,IAAC;QACxD,yDACJ;QAAA,6DAAI;QAEJ,0EAAoG;QAAvE,6IAAS,wBAAoB,IAAC;QACvD,yDACJ;QAAA,6DAAI;QACR,6DAAM;QACV,6DAAM;;QA/BK,2DAAkF;QAAlF,wQAAkF;QAGrE,2DAA+G;QAA/G,0VAA+G;QAClH,2DAAmG;QAAnG,oRAAmG;QAKzG,2DAA0F;QAA1F,6TAA0F;QACzF,2DACJ;QADI,wJACJ;QAEgC,2DAA0E;QAA1E,wPAA0E;QAItG,2DAA6J;QAA7J,wbAA6J;QAOjK,2DACJ;QADI,iGACJ;QAEG,2DAAyB;QAAzB,gJAAyB;QACxB,2DACJ;QADI,gGACJ;;;;;;;;;;;;;;;;;;;;;;;;AC9BqC;AACA;AAC0B;AACO;AACF;AACd;;AAcvD,MAAM,qBAAqB;;0FAArB,qBAAqB;kHAArB,qBAAqB;sHAXrB;YACL,yDAAY;YACZ,qFAAoB;YACpB,yDAAY;YACZ,sFAAmB;YACnB,wEAAiB;SACpB;mIAKQ,qBAAqB,mBAJf,kFAAwB,aANnC,yDAAY;QACZ,qFAAoB;QACpB,yDAAY;QACZ,sFAAmB;QACnB,wEAAiB,aAGX,kFAAwB;;;;;;;;;;;;;;;;;;ACbD;;AAI9B,MAAM,gBAAgB;IAEzB;QAIQ,2BAAsB,GAAW,YAAY,CAAC;QAHlD,IAAI,CAAC,OAAO,GAAG,4EAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrE,CAAC;IAKD,IAAI,UAAU,CAAC,KAA+B;QAC1C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,0EAAkB,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;SAC1D;aAAM;YACH,8EAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SACvD;IACL,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;;gFA/BQ,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACR0B;AAET;AAEL;AAY0C;AAGJ;;;;;;;;AAGxE,MAAM,WAAW;IAmCpB,YAAoB,OAAoB,EAAU,KAAsB,EAAU,IAAgB,EAC9E,SAA+B,EAAU,YAA8B,EACvE,SAAiC;QAFjC,YAAO,GAAP,OAAO,CAAa;QAAU,UAAK,GAAL,KAAK,CAAiB;QAAU,SAAI,GAAJ,IAAI,CAAY;QAC9E,cAAS,GAAT,SAAS,CAAsB;QAAU,iBAAY,GAAZ,YAAY,CAAkB;QACvE,cAAS,GAAT,SAAS,CAAwB;QA3B9C,gBAAW,GAAY,KAAK,CAAC;QAIpC,+BAA0B,GAAW,GAAG,CAAC;QAwFjC,6BAAwB,GAAW,CAAC,CAAC;QAhEzC,IAAI,CAAC,kBAAkB,GAAG,IAAI,uDAAY,EAAE,CAAC;QAC7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,uDAAY,EAAyB,CAAC;QACtE,IAAI,CAAC,yBAAyB,GAAG,IAAI,uDAAY,EAAmB,CAAC;QACrE,IAAI,CAAC,0BAA0B,GAAG,IAAI,uDAAY,EAAmB,CAAC;QACtE,IAAI,CAAC,8BAA8B,GAAG,IAAI,uDAAY,EAAW,CAAC;QAElE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,CAAC,SAAS,CAAC,sBAAsB;aAChC,SAAS,CAAC,CAAC,GAAoB,EAAE,EAAE;YAChC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC;QAGN,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACnC,CAAC;IArCD,IAAI,IAAI,CAAC,KAAmB;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;YACnC,MAAM,YAAY,GAAG,MAAM,CAAC,uEAAe,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;aACpC;SACJ;IAEL,CAAC;IAED,2BAA2B;IAC3B,oBAAoB;IACpB,YAAY;IAEZ,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAsBO,uBAAuB;QAC3B,IAAI,CAAC,oBAAoB;aACpB,SAAS,CAAC,CAAC,GAA0B,EAAE,EAAE;YAEtC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;gBAE7C,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;aACpC;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,iBAAiB,CAAC,QAA8B;QACpD,MAAM,IAAI,GAAqB,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;QACpD,MAAM,MAAM,GAA0C;YAClD,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,YAAY;YAC9B,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC;SACnD,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6FAAwB,EAAE,MAAM,CAAC,CAAC;QACxE,SAAS,CAAC,WAAW;aAChB,SAAS,CAAC,GAAG,EAAE;QAChB,CAAC,CAAC,CAAC;IACX,CAAC;IAED,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACpC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;SAC/D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACpC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;SACnE;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACpC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,IAAI,uBAAuB,CAAC,KAAc;QACtC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;aAAM;YACH,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;IACL,CAAC;IAED,IAAI,uBAAuB;QACvB,OAAO,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,KAA8B;QACzC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,GAAG,GAAG,4BAA4B,CAAC;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;aACrB,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,IAAI,CAAC,wDAAQ,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,CAAC;aACF,SAAS,CACN,CAAC,GAAiB,EAAE,EAAE;YAClB,6BAA6B;YAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC,EAAE,GAAG,EAAE;QAER,CAAC,CAAC,CAAC;IACf,CAAC;IAED,SAAS,CAAC,IAA2B;QAEjC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,GAAG,GAAG,oBAAoB,CAAC;QAE/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;aACpB,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,IAAI,CAAC,wDAAQ,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,CAAC;aACF,SAAS,CACN,CAAC,GAAiB,EAAE,EAAE;YAClB,6BAA6B;YAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YACrE,IAAI,IAAI;gBAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YACpD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,EAAE,GAAG,EAAE;QAER,CAAC,CAAC,CAAC;IACf,CAAC;IAED,aAAa,CAAC,IAA2B;QAErC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,GAAG,GAAG,wBAAwB,CAAC;QAEnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;aACpB,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,IAAI,CAAC,wDAAQ,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,CAAC;aACF,SAAS,CACN,CAAC,GAAiB,EAAE,EAAE;YAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtC,CAAC,EAAE,GAAG,EAAE;QAER,CAAC,CAAC,CAAC;IACf,CAAC;IAED,sBAAsB;QAClB,IAAI,GAAG,GAAG,iCAAiC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,GAAG,CAAC;aAC3B,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAiB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAC,CAAC;YAC5F,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACX,CAAC;IAED,cAAc,CAAC,IAA2B;QACtC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAEhC,IAAI,GAAG,GAAG,yBAAyB,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;aACpB,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CACN,GAAG,EAAE;YACD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClC,CAAC,EACD,GAAG,EAAE;YACD,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CACJ,CAAC;IACV,CAAC;IAED,WAAW,CAAC,IAA2B;QAEnC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAEhC,IAAI,GAAG,GAAG,sBAAsB,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;aACpB,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,IAAI,CACD,wDAAQ,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,CACL;aACA,SAAS,CAAC,CAAC,GAAiB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YACvF,IAAI,WAAW,EAAE;gBACb,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACrC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;gBACjD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC/C;YACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,EAAE,GAAG,EAAE;QAER,CAAC,CAAC,CAAC;IAEX,CAAC;IAED,kBAAkB,CAAC,SAAiB,EAAE,KAAa;QAC/C,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;QACD,IAAI,IAAI,GAA0B;YAC9B,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,KAAK;YAC7B,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,mBAAmB,CAAC,IAAY;QAC5B,IAAI,GAAG,GAAG,cAAc,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,UAAkB;QACvB,IAAI,GAAG,GAAG,qBAAqB,CAAC;QAChC,IAAI,OAAO,GAAsB;YAC7B,UAAU,EAAE,UAAU;SACzB,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,GAAG,EAAE,OAAO,CAAC;IACvD,CAAC;IAED,eAAe,CAAC,UAAkB;QAC9B,IAAI,GAAG,GAAG,0BAA0B,CAAC;QACrC,MAAM,IAAI,GAAG;YACT,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;YAClC,QAAQ,EAAE,KAAK;SAClB,CAAC;QAEF,IAAI,GAAG,GAAG,IAAI,0CAAO,EAAgB,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;aACpB,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAiB,EAAE,EAAE;YAC7B,IAAI,GAAG,EAAE;gBAEL;;;;;;;kBAOE;gBACF,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;gBAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClC,uBAAuB;aAC1B;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAGP,OAAO,GAAG,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,kBAAmC;QACrD,IAAI,GAAG,GAAG,mCAAmC,CAAC;QAE9C,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACpF,OAAO;SACV;QAED,IAAI,OAAO,GAA8B;YACrC,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE;YAC1C,SAAS,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE;YACxC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,MAAM;SAC7C,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;aACvB,IAAI,CACD,oDAAI,CAAC,CAAC,CAAC,CACV;aACA,SAAS,CAAC,CAAC,GAAiB,EAAE,EAAE;YAC7B,IAAI,GAAG,EAAE;gBACL,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;gBAChB,iDAAiD;gBACjD,uFAAuF;gBACvF,+FAA+F;gBAC/F,kCAAkC;gBAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;aACnD;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,aAAa;QACT,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAEM,SAAS;QACZ,IAAI,GAAG,GAAG,qBAAqB,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;aACb,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,GAAG,EAAE;gBACL,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtC;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAEM,iBAAiB;QAEpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,GAAG,GAAG,qBAAqB,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;aACb,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,GAAG,EAAE;gBACL,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAEM,SAAS;QACZ,IAAI,CAAC,IAAI,GAAG;YACR,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,IAAI;YACvB,oBAAoB,EAAE,IAAI;YAC1B,qCAAqC,EAAE,IAAI;YAC3C,wCAAwC,EAAE,IAAI;YAC9C,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE,IAAI;YACtB,mBAAmB,EAAE,IAAI;YACzB,kBAAkB;YAClB,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,IAAI;YACpB,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;YAEV,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,IAAI;YACV,mBAAmB,EAAE,IAAI;YACzB,uBAAuB,EAAE,KAAK;SACjC,CAAC;QACF,yEAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxD,CAAC;IAEM,SAAS;QACZ,IAAI,GAAG,GAAG,gBAAgB,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,uBAAuB,CAAC,OAAwB;QAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QACnC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,wBAAwB,CAAC,OAAwB;QAC7C,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACpC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB,CAAC,OAAwB;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,4BAA4B,CAAC,mBAA4B;QACrD,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QACpD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,oBAAoB,CAAC,WAAoB;QACrC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,aAAa,CAAC,IAAkB;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,YAAoB;QACxB,IAAI,YAAY,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;SACV;QAED,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC,EAAE,YAAY,CAAC,CAAC;IACrB,CAAC;IAEO,SAAS;QACb,MAAM,GAAG,GAAG,uBAAuB,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,GAAG,EAAE,IAAI,CAAC;aAC7B,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,GAAG,EAAE;YACZ,mBAAmB;QACvB,CAAC,CAAC,CAAC;IACX,CAAC;IAED,wBAAwB,CAAC,WAAoB;QACzC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC;IAED,yBAAyB;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE;YAChC,mCAAmC;YACnC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;SAChC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;IACpC,CAAC;;sEAxdQ,WAAW;4GAAX,WAAW,WAAX,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;ACbD;AAC+B;AAIyD;AACiB;AAG7C;;;;;;;;;;ICD3E,6HAAgF;;;IAChF,gIAAmF;;;IACnF,2HAA8E;;;IAC9E,2HAA8E;;;IAC9E,0HAA6E;;;ADS9E,MAAM,uBAAwB,SAAQ,6DAAY;IA2BrD,YAAmB,OAAoB,EAAS,KAAsB,EAAS,MAAuB;QAClG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAAS,WAAM,GAAN,MAAM,CAAiB;QAjB5F,iBAAY,GAA0B,IAAI,uDAAY,EAAW,CAAC;QAClE,kBAAa,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAErE,sBAAiB,GAAY,KAAK,CAAC;QAEY,YAAO,GAA+C,IAAI,CAAC;QACzD,qBAAgB,GAAyC,IAAI,CAAC;QAC9D,oBAAe,GAAyC,IAAI,CAAC;QAE9G,2BAAsB,GAAsB,IAAI,uDAAY,EAAO,CAAC;QACpE,kCAA6B,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAC3E,8BAAyB,GAAsB,IAAI,uDAAY,EAAO,CAAC;QACvE,2BAAsB,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAEpE,kCAA6B,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAC3E,qCAAgC,GAAsB,IAAI,uDAAY,EAAO,CAAC;IAI9E,CAAC;IA1BD,IAAa,YAAY,CAAC,KAAc;QACpC,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;YAC9B,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAuBD,sBAAsB,CAAC,YAAqB;QACxC,IAAI,YAAY,EAAE;YACd,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACpC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;SAC3C;aAAM;YACH,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACvC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;SAC9C;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,cAAc;QACV,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,cAAc;QACV,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,oBAAoB,CAAC,GAAY;QAC7B,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED;;;;;WAKO;IAEP,eAAe;QACX,iDAAiD;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC7B,CAAC;IAED,UAAU;QACN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC9C,CAAC;IAED,gBAAgB,CAAC,OAAe,EAAE,OAAe;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;;8FA/EQ,uBAAuB;qHAAvB,uBAAuB;kEAgBrB,0IAAoC;kEACpC,yIAAoC;kEAFjC,yHAA+B;;;;;;;;QC7CjD,yEAAoB;QAChB,yEAA0B;QACtB,qGAAmH;QAAzC,qLAAiB,qBAAsB,IAAC;QAClH,4DAA+B;QAE/B,qGAA0H;QAAzC,qLAAiB,qBAAsB,IAAC;QACzH,4DAA+B;QAE/B,qGAA+G;QAAzC,qLAAiB,qBAAsB,IAAC;QAC9G,4DAA+B;QAE/B,2GAA+F;QAAzC,2LAAiB,qBAAsB,IAAC;QAC9F,4DAAqC;QAErC,4GAA8F;QAAzC,4LAAiB,qBAAsB,IAAC;QAC7F,4DAAqC;QAErC,mIAAgF;QAChF,mIAAmF;QACnF,mIAA8E;QAC9E,mIAA8E;QAC9E,mIAA6E;QACjF,4DAAM;QAEN,2EAAyD;QACrD,2EAA2E;QAA3B,6IAAS,oBAAgB,IAAC;QACtE,wDACJ;QAAA,4DAAM;QAEN,2EAAuE;QAA3B,6IAAS,oBAAgB,IAAC;QAClE,wDACJ;QAAA,4DAAM;QACV,4DAAM;QACV,4DAAM;;;;;;;QA/BoD,0DAAuB;QAAvB,gFAAuB;QAGpB,0DAA2B;QAA3B,oFAA2B;QAGhC,0DAAqB;QAArB,8EAAqB;QASxD,0DAAoD;QAApD,iGAAoD;QACpD,0DAAuD;QAAvD,iGAAuD;QACvD,0DAAkD;QAAlD,iGAAkD;QAClD,0DAAkD;QAAlD,iGAAkD;QAClD,0DAAiD;QAAjD,iGAAiD;QAK1D,0DACJ;QADI,yGACJ;QAGI,0DACJ;QADI,yGACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BqC;AACuB;AACE;AACuB;AACd;AAC0B;AAGxB;AACwC;AAC3C;;AAsBvE,MAAM,oBAAoB;;wFAApB,oBAAoB;iHAApB,oBAAoB;sHAHlB,EAAE,YAhBJ;YACL,yDAAY;YACZ,qFAAoB;YACpB,gFAAiB;YACjB,uGAAwB;YACxB,yFAAoB;YACpB,mHAA4B;YAC5B,oIAAiC;YACjC,mIAAiC;SACpC;mIAUQ,oBAAoB,mBARzB,+EAAuB,aAVvB,yDAAY;QACZ,qFAAoB;QACpB,gFAAiB;QACjB,uGAAwB;QACxB,yFAAoB;QACpB,mHAA4B;QAC5B,oIAAiC;QACjC,mIAAiC,aAMjC,+EAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9B6C;AAE/C;AAC4B;AAChB;;;;;;;;;;;ICJjC,mEACK;;;IADiG,iJAAmB;;;;IAIrH,uEAAiH;IAC7G,yEAA+B;IAC3B,0EAAS;IACL,uEAAiI;;IACjI,wEAA2J;;IAC3J,wEAAkI;;IAElI,qEAA+I;IACnJ,4DAAU;IACd,4DAAM;IAEN,2EAAiC;IAC7B,2EAAuD;IACnD,wDACJ;IAAA,4DAAM;IACV,4DAAM;IACV,4DAAI;;;;IAhB+B,yLAAoD;IAGxC,0DAA0E;IAA1E,oQAA0E;IAClD,0DAA4E;IAA5E,uQAA4E;IACnG,0DAA0E;IAA1E,qQAA0E;IAEzG,0DAAgE;IAAhE,gMAAgE;IAMrE,0DACJ;IADI,+FACJ;;;IApBpB,yEAAuD;IACnD,yEAAuB;IACnB,yHACK;IAEL,yEAA4B;IACxB,yHAgBI;IACR,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAvB2F,0DAAW;IAAX,8EAAW;IAI5E,0DAAa;IAAb,sFAAa;;ADWtC,MAAM,yBAA0B,SAAQ,6DAAY;IAQvD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,IAAgB;QAChC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,SAAI,GAAJ,IAAI,CAAY;QAHpC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAM7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7D,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,yEAAqB,EAAE,CAAC;IAC5B,CAAC;IAGD,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,kCAAkC,CAAC;aACpE,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,CAAC,CAAC,CAAC;IACX,CAAC;;kGAhCQ,yBAAyB;uHAAzB,yBAAyB;QCjBtC,qHAyBM;;QAzBmB,6HAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;IEE7C,uEAA+J;IAC3J,uDAEA;IAAA,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IARD,gMAA4D;IAC3D,0DAEA;IAFA,mGAEA;;;IALZ,yEAA0D;IACtD,yEAAiC;IAC7B,mHAQI;IACR,4DAAM;IACV,4DAAM;;;IAVuF,0DAAa;IAAb,sFAAa;;ADanG,MAAM,qBAAqB;IAK9B,YAAqB,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;QACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACpE,CAAC;;0FAPQ,qBAAqB;mHAArB,qBAAqB;QCflC,iHAYM;;QAZsB,6HAA4B;;;;;;;;;;;;;;;;;;;;;;;;ACCX;AACmB;AACnB;AACiC;AAChB;AACW;;AAmBlE,MAAM,kBAAkB;;oFAAlB,kBAAkB;+GAAlB,kBAAkB;mHAhBlB;YACL,yDAAY;YACZ,qFAAoB;YACpB,yDAAY;YACZ,wEAAiB;SACpB;mIAWQ,kBAAkB,mBATvB,2EAAqB;QACrB,oFAAyB,aAPzB,yDAAY;QACZ,qFAAoB;QACpB,yDAAY;QACZ,wEAAiB,aAOjB,2EAAqB;QACrB,oFAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBuD;AAClC;AAE+B;AAGxD;AACY;;;;;;;;;;;;ICWrB,0EAAqF;IACjF,uDACJ;IAAA,4DAAM;;;;IADF,0DACJ;IADI,kHACJ;;;IAkBQ,qEAEM;;;;;IADN,uWAAoH;;;IAGhH,0EAAoE;IAChE,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,+GACJ;;;IAPR,wEAAkE;IAC9D,oKAEM;IACN,gQAIc;IAClB,qEAAe;;;;IAR4D,0DAA+B;IAA/B,yHAA+B;;;IAU1G,wEAAgE;IAC5D,0EAAuE;IACnE,uDACJ;IAAA,4DAAM;IACV,qEAAe;;;IAFP,0DACJ;IADI,6KACJ;;;IAIA,qEAEM;;;;IADD,2aAAwH;;;IAIzH,0EAAiE;IAC7D,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,+GACJ;;;IARR,wEAA8D;IAC1D,oKAEM;IAEN,gQAIc;IAClB,qEAAe;;;;IATL,0DAA+B;IAA/B,yHAA+B;;;;IAhDrD,yEAAsC;IAClC,sEAAmE;IAC/D,uDACJ;IAAA,4DAAM;IAEN,uEAAoG;IAChG,0EAAS;IACL,wEAAwH;;IACxH,qEAAuI;IAC3I,4DAAU;IAEV,oJAEM;IACV,4DAAI;IAEJ,0EAAsC;IAClC,2EAA8B;IAC1B,yEAA6F;IACzF,wDACJ;IAAA,4DAAI;IAEJ,2EAA8B;IAC1B,wDACJ;IAAA,4DAAM;IAEN,2EAAoC;IAChC,wDACJ;IAAA,4DAAM;IAEN,uKASe;IAEf,uKAIe;IAEf,uKAUe;IACnB,4DAAM;IAEN,2EAA+B;IAC3B,wDACJ;;IAAA,4DAAM;IACV,4DAAM;IACV,4DAAM;;;;;;IA/DG,0DAA6D;IAA7D,oIAA6D;IAC9D,0DACJ;IADI,qFACJ;IAEG,0DAAsC;IAAtC,mMAAsC;IAEzB,0DAA2F;IAA3F,iTAA2F;IAC9F,0DAA+E;IAA/E,4OAA+E;IAGrD,0DAAgD;IAAhD,gLAAgD;IAOrC,0DAAwB;IAAxB,6FAAwB;IAA/D,mMAAsC;IACrC,0DACJ;IADI,2FACJ;IAGI,0DACJ;IADI,4HACJ;IAGI,0DACJ;IADI,iGACJ;IAEe,0DAAiD;IAAjD,6HAAiD;IAWjD,0DAA+C;IAA/C,2HAA+C;IAM/C,0DAA6C;IAA7C,uHAA6C;IAc5D,0DACJ;IADI,iQACJ;;;IA/DZ,wEAAkE;IAC9D,+IAgEM;IACV,qEAAe;;;IAjEc,0DAAW;IAAX,0EAAW;;;IAkFxB,0EAAqF;IACjF,uDACJ;IAAA,4DAAM;;;;IADF,0DACJ;IADI,oHACJ;;;IAkBQ,qEAEM;;;;;IADN,2WAAoH;;;IAIhH,0EAAoE;IAChE,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,+GACJ;;;IARR,wEAA2G;IACvG,mLAEM;IAEN,+QAIc;IAClB,qEAAe;;;;IAT4D,0DAA+B;IAA/B,2HAA+B;;;IAW1G,wEAAyG;IACrG,0EAAuE;IACnE,uDACJ;IAAA,4DAAM;IACV,qEAAe;;;IAFP,0DACJ;IADI,gLACJ;;;IA7ChB,yEAAsC;IAClC,sEAAmE;IAC/D,uDACJ;IAAA,4DAAM;IAEN,uEAAoG;IAChG,0EAAS;IACL,wEAAwH;;IACxH,qEAAsI;IAC1I,4DAAU;IAEV,mKAEM;IACV,4DAAI;IAEJ,0EAAsC;IAClC,2EAA8B;IAC1B,yEAA6F;IACzF,wDACJ;IAAA,4DAAI;IAEJ,2EAA8B;IAC1B,wDACJ;IAAA,4DAAM;IAEN,2EAAoC;IAChC,wDACJ;IAAA,4DAAM;IAEN,sLAUe;IAEf,sLAIe;IACnB,4DAAM;IAEN,2EAA+B;IAC3B,wDACJ;;IAAA,4DAAM;IACV,4DAAM;IACV,4DAAM;;;;;;IApDG,0DAA6D;IAA7D,qIAA6D;IAC9D,0DACJ;IADI,sFACJ;IAEG,0DAAsC;IAAtC,qMAAsC;IAEzB,0DAA2F;IAA3F,oTAA2F;IACpE,0DAA+E;IAA/E,+OAA+E;IAG/E,0DAAgD;IAAhD,oLAAgD;IAOrC,0DAAwB;IAAxB,8FAAwB;IAA/D,qMAAsC;IACrC,0DACJ;IADI,4FACJ;IAGI,0DACJ;IADI,8HACJ;IAGI,0DACJ;IADI,kGACJ;IAEe,0DAA0F;IAA1F,0LAA0F;IAY1F,0DAAwF;IAAxF,wLAAwF;IAQvG,0DACJ;IADI,qQACJ;;;IApDZ,wEAAkE;IAC9D,8JAqDM;IACV,qEAAe;;;IAtDc,0DAAW;IAAX,2EAAW;;;IAF5C,wEAA8C;IAC1C,+JAuDe;IACnB,qEAAe;;;IAxDuB,0DAAiB;IAAjB,wFAAiB;;;;IA2D3D,0EAA2G;IAA1B,oUAAmB,KAAK,IAAC;IACtG,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,0GACJ;;;;IAEA,0EAA2G;IAAzB,oUAAmB,IAAI,IAAC;IACtG,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,0GACJ;;;IA9IJ,yEAA+E;IAC3E,yEAAgC;IAC5B,uDACJ;IAAA,4DAAM;IAEN,sEAAK;IACD,gJAkEe;IACnB,4DAAM;IAEN,yEAAyE;IACrE,gJAyDe;IACnB,4DAAM;IAEN,8HAEM;IAEN,8HAEM;IACV,4DAAM;;;IA7IE,0DACJ;IADI,wHACJ;IAGsC,0DAAiB;IAAjB,wFAAiB;IAqEf,0DAAgC;IAAhC,2FAAgC;IACrD,0DAA6B;IAA7B,gGAA6B;IA4DP,0DAAsC;IAAtC,mHAAsC;IAItC,0DAAuC;IAAvC,oHAAuC;;AD3H7E,MAAM,4BAA6B,SAAQ,6DAAY;IAiC1D,YAAmB,OAAoB,EAAS,KAAsB,EAClD,IAAgB,EAAU,SAAuB;QACjE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,SAAI,GAAJ,IAAI,CAAY;QAAU,cAAS,GAAT,SAAS,CAAc;QAxB3D,eAAU,GAAG,IAAI,uDAAY,EAAO,CAAC;QAU/C,mBAAc,GAAW,OAAO,CAAC;QAGjC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAEjD,mBAAc,GAAY,KAAK,CAAC;QAChC,cAAS,GAAY,IAAI,CAAC;QAG1B,2BAAsB,GAAwB,sFAA8B,CAAC;QAC7E,yBAAoB,GAAwB,oFAA4B,CAAC;QACzE,qBAAgB,GAAwB,gFAAwB,CAAC;QAK7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC1D,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;IAClI,CAAC;IArCD,IAAa,UAAU,CAAC,KAAa;QACjC,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;IACL,CAAC;IAID,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IA4BD,QAAQ;IACR,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,6BAA6B,IAAI,CAAC,WAAW,EAAE,CAAC;aAC5E,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,yBAAyB;QAC7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC/C,OAAO;SACV;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAmB,EAAE,EAAE;YAC7D,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxH,MAAM,gBAAgB,GAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClJ,MAAM,iBAAiB,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7I,IAAI,UAAU,GAAkB,IAAI,CAAC;YACrC,IAAI,EAAE,IAAI,EAAE,CAAC,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,IAAI,EAAE,CAAC,eAAe,EAAE;gBACxE,UAAU,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;aACzD;YACD,MAAM,GAAG,GAAuB;gBAC5B,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,gBAAgB;gBAC5B,WAAW,EAAE,iBAAiB,EAAC,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;gBACxG,YAAY,EAAE,EAAE,CAAC,kBAAkB;gBACnC,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,SAAS,EAAE,EAAE,CAAC,YAAY;gBAC1B,YAAY,EAAE,EAAE,CAAC,eAAe;gBAChC,iBAAiB,EAAE,UAAU;gBAC7B,eAAe,EAAE,EAAE,CAAC,kBAAkB;gBACtC,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,WAAW,EAAE,EAAE,CAAC,cAAc;gBAC9B,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,UAAU,EAAE,EAAE,CAAC,aAAa;gBAC5B,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,UAAU,EAAE,EAAE,CAAC,gBAAgB;gBAC/B,YAAY,EAAE,EAAE,CAAC,aAAa,GAAG,CAAC;gBAClC,aAAa,EAAE,EAAE,CAAC,aAAa;gBAC/B,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,MAAM,EAAE,EAAE,CAAC,MAAM;aACpB,CAAC;YAGF,yEAAyE;YACzE,sFAAsF;YACtF,IAAI;YACJ,QAAQ;YACR,GAAG,CAAC,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YACvE,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB,CAAC,OAA2B;QAC1C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,EAAE;YAC1G,OAAO,IAAI,CAAC;SACf;QAED,IAAI,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;QACpF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;;wGA/HQ,4BAA4B;0HAA5B,4BAA4B;QCjBzC,wHA+IM;;QA/I8B,6GAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoC;AACrC;AAGnC;AACZ;AAEe;;;;;;;;;;;;ICFxB,0EAAgC;IAC5B,uEAAuG;;IAEvG,oEAAqI;IACzI,4DAAU;;;;IAHE,0DAA2E;IAA3E,mQAA2E;IAE9E,0DAA+D;IAA/D,+LAA+D;;;;;IALhF,uEAAgJ;IAAvF,8TAAoB,IAAI,KAAE;IAC/E,yEAAkC;IAC9B,4IAIU;IACd,4DAAM;IAEN,yEAAkC;IAC9B,uDACJ;IAAA,4DAAM;IACV,4DAAI;;;IAZA,wLAAoD;IAEtC,0DAAoB;IAApB,mFAAoB;IAQ9B,0DACJ;IADI,+FACJ;;;IAdhB,wEAA6C;IACzC,yEAA2B;IACvB,yEAA+B;IAC3B,4HAYI;IACR,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAfkG,0DAAa;IAAb,sFAAa;;ADgBvH,MAAM,qBAAsB,SAAQ,6DAAY;IAsDnD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,QAAmB,EAAU,OAAoB,EACjD,IAAgB;QAChC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,aAAQ,GAAR,QAAQ,CAAW;QAAU,YAAO,GAAP,OAAO,CAAa;QACjD,SAAI,GAAJ,IAAI,CAAY;QAtD3B,iBAAY,GAAiB,8DAAoB,CAAC;QAClD,eAAU,GAAY,KAAK,CAAC;QAC3B,mBAAc,GAAuB,IAAI,uDAAY,EAAQ,CAAC;QAC9D,gBAAW,GAAuB,IAAI,uDAAY,EAAQ,CAAC;QAG7D,eAAU,GAAY,KAAK,CAAC;QAG5B,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QA+CrD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,UAAU;aAClB,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACX,CAAC;IAnDD,IAAY,eAAe;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,kFAAkF;YAClF,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SACnE;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAGD,IAAY,YAAY;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,4EAA4E;YAC5E,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC7D;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAGD,IAAY,uBAAuB;QAC/B,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAChC,kGAAkG;YAClG,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;SACnF;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACzC,CAAC;IAID,IAAY,kBAAkB;QAC1B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,wFAAwF;YACxF,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;SACzE;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAeD,QAAQ;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEO,aAAa;QACjB,IAAG,IAAI,CAAC,UAAU;YAAE,OAAO;QAE3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,kCAAkC,CAAC;aACpE,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACX,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,IAAc;QACrB,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAE/C,IAAI,CAAC,IAAI,EAAE;YACP,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;aAC7D;YACD,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aACnC;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;aACzE;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;aAAM;YACH,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;aAChE;YACD,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACpC;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;aAC5E;YAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;IACL,CAAC;IAED,YAAY;QACR,IAAI,MAAM,GAAgB,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC;QACrE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,EAAE,EAAE;YACJ,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;SAC3C;IACL,CAAC;IAGD,WAAW;QACP,IAAI,IAAI,CAAC,YAAY,IAAI,0EAAgC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;YAC3F,OAAO;SACV;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;SACnE;IACL,CAAC;IAGD,gBAAgB,EAAC,wBAAwB;QAErC,IAAI,IAAI,CAAC,YAAY,IAAI,0EAAgC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;YAC3F,OAAO;SACV;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;SACnE;IACL,CAAC;IAED,YAAY,CAAC,KAAU;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;aACnE;iBAAM;gBACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;aAChE;SACJ;IAEL,CAAC;;0FA3JQ,qBAAqB;mHAArB,qBAAqB;mJAArB,uBAAmB,iLAAnB,4BAAwB;;QCnBrC,mIAkBe;;QAlBA,6HAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;ACEW;;;;;;;;;;AAW/C,MAAM,qBAAsB,SAAQ,6DAAY;IAEnD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,OAAoB;QACpC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,YAAO,GAAP,OAAO,CAAa;IAExC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;SACtC;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;IAED,eAAe;QACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,EAAE,EAAC,CAAC,CAAC;IACpF,CAAC;IAED,WAAW;IACX,CAAC;;0FArBQ,qBAAqB;mHAArB,qBAAqB;QCblC,0EAA6D;QACzD,8EAAqL;QAErL,uFAAyF;QAEzF,8EAAqC;QAErC,iFAA2C;QAC/C,4DAAO;QAEP,4EAAiC;;QATd,0DAA+C;QAA/C,4GAA+C;QAEtC,0DAAuC;QAAvC,oGAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACH2C;AAEE;AAClC;AAGP;AACjC;AAIgB;AAC2B;AACxB;AAO4B;;;;;;;;;;;;;;;;;;;;;ICnBjF,gFAEoE;;;IAFpC,yLAA6E;;;IAMrG,2EAA2F;IACvF,yEAAqI;IACjI,wDAA6B;IAAA,iEAAM;IAAA,wDAEnC;IAAA,0EAAkB;IACd,+DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,6DAAM;IACV,6DAAM;IACV,6DAAI;IACR,6DAAM;;;IATC,2DAA2D;IAA3D,4OAA2D;IAC1D,2DAA6B;IAA7B,4GAA6B;IAAM,2DAEnC;IAFmC,uGAEnC;;;IAiDA,2EAAuF;IACnF,yEAAqI;IACjI,wDAA6B;IAAA,iEAAM;IAAA,wDAEnC;IAAA,0EAAkB;IACd,+DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,6DAAM;IACV,6DAAM;IACV,6DAAI;IACR,6DAAM;;;IATC,2DAA2D;IAA3D,4OAA2D;IAC1D,2DAA6B;IAA7B,4GAA6B;IAAM,2DAEnC;IAFmC,uGAEnC;;ADlCrB,MAAM,iBAAkB,SAAQ,6DAAY;IAuC/C,YAAmB,OAAoB,EAAS,KAAsB,EAAU,KAAqB,EACjF,IAAgB,EAAU,IAAe,EACzC,MAAc,EAAS,MAAuB,EAAU,SAAuB,EAC/E,YAA8B,EAAU,KAA4B,EACpE,EAAe,EAAU,eAAmC;QAC5E,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QALP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAAU,UAAK,GAAL,KAAK,CAAgB;QACjF,SAAI,GAAJ,IAAI,CAAY;QAAU,SAAI,GAAJ,IAAI,CAAW;QACzC,WAAM,GAAN,MAAM,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAiB;QAAU,cAAS,GAAT,SAAS,CAAc;QAC/E,iBAAY,GAAZ,YAAY,CAAkB;QAAU,UAAK,GAAL,KAAK,CAAuB;QACpE,OAAE,GAAF,EAAE,CAAa;QAAU,oBAAe,GAAf,eAAe,CAAoB;QA9BhF,eAAU,GAAuB,0EAAyB,CAAC;QAE3D,aAAQ,GAAY,KAAK,CAAC;QAIlB,kBAAa,GAAiB,IAAI,0CAAO,EAAE,CAAC;QAC5C,yBAAoB,GAAsB,IAAI,wDAAY,EAAE,CAAC;QAC7D,0BAAqB,GAAsB,IAAI,wDAAY,EAAE,CAAC;QACtE,yBAAoB,GAAsB,IAAI,wDAAY,EAAE,CAAC;QAM7D,iBAAY,GAAY,KAAK,CAAC;QAG9B,UAAK,GAAG,CAAC,CAAC;QAEV,cAAS,GAAY,KAAK,CAAC;QAInB,4BAAuB,GAAW,IAAI,CAAC;QAmOvC,yBAAoB,GAAW,IAAI,CAAC;QA1NxC,IAAI,CAAC,eAAe,CAAC,aAAa;aAC7B,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC,CAAC;QAEN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9C,OAAO;gBACH,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,KAAK;gBACb,UAAU,EAAE,KAAK;aACpB;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB;QACvD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC;QAEnE,IAAI,CAAC,MAAM,CAAC,kBAAkB;aACzB,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACrH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACpD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC5I;iBAAM;gBACH,IAAI,CAAC,UAAU,GAAG,0EAAyB,CAAC;gBAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC5B;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;aACzB;QACL,CAAC,CAAC,CAAC;QAEP,0CAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC;aAChF,IAAI,CAAC,qDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,oBAAoB;iBACpB,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;YACP,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACzD,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACX,CAAC;IArGD,IAAI,QAAQ,CAAC,KAA2B;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;IAiGO,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,MAAM,EAAE,CAAC,GAAG,CAAC;SAChB,CAAC;IACN,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;aACxE,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,GAAG,EAAE;gBACN,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClD,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,yEAAqB,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aAC7B;QACL,CAAC,CAAC,CAAC;QACP,EAAE;QAEF,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,eAAe,CAAC,GAAyB;QACrC,IAAI,CAAC,GAAG,EAAE;YACN,OAAO;SACV;QACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QAEpB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,2IAA2I;QAE3I,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAEO,WAAW;QAEf,IAAI,OAAO,GAAW,IAAI,CAAC;QAC3B,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE;YACxF,OAAO,GAAG,iEAAS,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAC/E,QAAQ,GAAG,iEAAS,CAAC,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;SAC9E;QAED,IAAI,CAAC,OAAO,EAAE;YACV,mDAAmD;YACnD,sCAAsC;YACtC,kBAAkB;YAClB,4EAA4E;YAC5E,IAAI;YACJ,+CAA+C;YAC/C,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;SAC7D;QAED,IAAI,CAAC,QAAQ,EAAE;YACX,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACxG;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;YACrF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;;YAEtI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1K,CAAC;IAEO,cAAc;QAClB,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK;YACxC,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAE;YACvD,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE,QAAQ,CAAC;SACpE;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;SAClD;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,QAAQ,CAAC;QAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAEnG,IAAI,EAAE,GAAG;YACL,EAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,UAAU,EAAC;YAClE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SACpB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAEO,QAAQ;QAEZ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC;YACvC,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,4EAAkB,EAAE;gBACtD,+EAA2B,CAAC,mBAAmB,CAAC,CAAC;aACpD;YACD,OAAO;SACV;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YACjC,UAAU,CAAC,GAAG,EAAE;gBACZ,+EAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC7D,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3C,CAAC,EAAE,CAAC,CAAC,CAAC;SACT;IACL,CAAC;IAED;;;;OAIG;IAEH,OAAO,CAAC,KAAsB;QAC1B,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,4EAAkB,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YACnC,6CAA6C;YAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;SACrC;IACL,CAAC;IAED,WAAW,CAAC,KAAsB;QAC9B,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,4EAAkB,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YACnC,6CAA6C;YAE7C,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC5I;IACL,CAAC;IAGD,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACpC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;aAAM;YACH,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YACvC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC7B;IACL,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,eAAe;QACX,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAID,QAAQ;QACJ,kEAAkE;QAClE,8DAA8D;QAC9D,iCAAiC;QACjC,kDAAkD;QAClD,yDAAyD;QACzD,4GAA4G;QAE5G,0DAA0D;QAC1D,mFAAmF;QACnF,sDAAsD;QACtD,iIAAiI;QACjI,4CAA4C;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACnB,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAAC,qFAAqF;QACnH,uDAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,2DAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;YAE7D,MAAM,GAAG,GAAmB,CAAE,CAAC,GAAG,CAAC;YAEnC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,GAAG,EAAE;gBAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aACvC;iBAAM,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE;gBACjD,IAAI,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;oBAChF,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC7E,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;iBACrC;aACJ;iBAAM;gBACH,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aACvC;YACD,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,EAAE;QAEF,8CAA8C;QAC9C,0DAA0D;QAC1D,IAAI,CAAC,KAAK,CAAC,GAAG;aACT,IAAI,CACD,oDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EACvB,0DAAS,CAAC,EAAE,CAAC,EAAE,CAAC,yCAAE,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EACrD,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC;aACA,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE;gBACvC,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;YAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,KAAK,CAAC,WAAW;aACjB,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QACP,EAAE;QACF,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;IACzD,CAAC;IAEO,wBAAwB;QAC5B,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;QACjD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;QAEjD,IAAI,SAAS,GAAyC,QAAQ,CAAC,aAAa,CAAC,cAAc,iBAAiB,IAAI,CAAC,CAAC;QAClH,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;SAC5C;QAED,IAAI,SAAS,GAAyC,QAAQ,CAAC,aAAa,CAAC,cAAc,iBAAiB,IAAI,CAAC,CAAC;QAClH,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YAEjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAErD,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9C,SAAS,CAAC,GAAG,GAAG,8BAA8B,CAAC;YAC/C,SAAS,CAAC,IAAI,GAAG,iBAAiB,CAAC;YACnC,SAAS,CAAC,EAAE,GAAG,iBAAiB,CAAC;YAEjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAGzC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9C,SAAS,CAAC,IAAI,GAAG,iBAAiB,CAAC;YACnC,SAAS,CAAC,SAAS;gBACf;;2BAEW,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB;;+BAExC,IAAI,CAAC,QAAQ,CAAC,iBAAiB;;;6BAGjC,UAAU;;;;;;aAM1B,CAAC;YACF,SAAS,CAAC,EAAE,GAAG,iBAAiB,CAAC;YAEjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;SAC5C;IACL,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,CAAiB,EAAE,CAAiB;QAC1D,OAAO,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;IAC7D,CAAC;IAED,oBAAoB,CAAC,YAAqB;QACtC,IAAI,YAAY,KAAK,IAAI,CAAC,YAAY,EAAE;YACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;SACpC;IACL,CAAC;IAED,aAAa;QACT,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK;eACrC,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,EACvD;YACE,OAAO,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE,KAAK,CAAC;SAC7D;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE,WAAW,EAAE;YACtG,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;SAC3G;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IACtC,CAAC;;kFA7ZQ,iBAAiB;gHAAjB,iBAAiB;mEAwBf,+FAAuB;;;;;QCtDtC,2EAAmD;QAC/C,kIAEoE;QAEpE,0EAAuB;QACnB,0EAAsB;QAClB,8GAUM;QAEN,0EAAiG;QAAzB,uIAAS,kBAAc,IAAC;QAC5F,wDAEA;QAAA,0EAAkB;QACd,+DAAK;QAAL,uEAAK;QACD,qEAAqH;QACzH,6DAAM;QACV,6DAAM;QACV,6DAAM;QAEN,gEAC0H;QAD1H,4GAC0H;QAD3D,qMAAuB,+BAA2B,IAAC,4IACxD,kEAA8D,IADN;QACQ,6DAAuC;QAEjK,2EAA0B;QACtB,4EAA4B;QACxB,2FAA2D;QAE3D,oFAAmJ;QAEnJ,8FAKuD;QAAhC,4KAAe,mBAAe,IAAC;QACtD,6DAAwB;QAQxB,sFACmD;QAApC,oKAAe,uBAAmB,IAAC;QAAC,6DAAgB;QAEvE,6DAAM;QAEN,8EAA8B;QAC1B,4FAAmI;QAAhF,4KAAgB,gCAA4B,IAAC,+GAAkB,mBAAe,IAAjC;QAAmC,6DAAsB;QAEzJ,iHAUM;QACV,6DAAQ;QACZ,6DAAM;QACV,6DAAM;QACV,6DAAM;QACV,6DAAO;;QA1Ea,2DAAc;QAAd,+EAAc;QAM0C,2DAAwB;QAAxB,sHAAwB;QAapF,2DAEA;QAFA,mGAEA;QAOkC,2DAAwB;QAAxB,sFAAwB;QAOpC,2DAA2B;QAA3B,qFAA2B;QAEtB,2DAAsB;QAAtB,gFAAsB;QAc9B,2DAAyB;QAAzB,mFAAyB;QAMnB,2DAA6B;QAA7B,2FAA6B;QAEW,2DAAwB;QAAxB,sHAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvD5D;AACA;AACmB;AACZ;AACG;AACwB;AACH;AACT;AAEG;AACG;AACH;AACG;AACM;AACD;AAChB;AAC+B;AACd;AACf;AACd;AAC0C;AAC5B;AACA;AACY;AACX;AACI;AAGgB;AACjB;AACP;AACC;;;;AAmDvD,MAAM,cAAc;;4EAAd,cAAc;4GAAd,cAAc;iHANZ;QAEP,mFAAqB;KACxB,YA7CQ;YACL,mFAAkB;YAClB,0DAAY;YACZ,wDAAW;YACX,sFAAoB;YACpB,6EAAgB;YAChB,mEAAqB,CAAC;gBAClB,EAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,4EAAqB,EAAC;gBAC5C,EAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,kEAAiB,EAAC;aACnD,CAAC;YACF,mFAAkB;YAClB,wEAAqB,EAAE;YACvB,gFAAiB;YACjB,yFAAoB;YACpB,wGAAwB;YACxB,gFAAiB;YACjB,yEAAiB;YACjB,0FAAoB;YACpB,2EAAe;YACf,gEAAmB;YACnB,6DAAW;YACX,uGAA2B;YAC3B,uFAAiB;YACjB,4EAAgB;YAChB,gFAAoB;YACpB,2IAAmC;YACnC,+EAAiB;YACjB,wEAAc;YACd,yEAAe;SAClB;oIAmBQ,cAAc,mBAjBnB,kEAAiB;QACjB,0FAA4B;QAC5B,4EAAqB;QACrB,4EAAqB,aAjCrB,mFAAkB;QAClB,0DAAY;QACZ,wDAAW;QACX,sFAAoB;QACpB,6EAAgB,8DAKhB,mFAAkB,oEAElB,gFAAiB;QACjB,yFAAoB;QACpB,wGAAwB;QACxB,gFAAiB;QACjB,yEAAiB;QACjB,0FAAoB;QACpB,2EAAe;QACf,gEAAmB;QACnB,6DAAW;QACX,uGAA2B;QAC3B,uFAAiB;QACjB,4EAAgB;QAChB,gFAAoB;QACpB,2IAAmC;QACnC,+EAAiB;QACjB,wEAAc;QACd,yEAAe,aASf,kEAAiB;QACjB,0FAA4B;QAC5B,4EAAqB;QACrB,4EAAqB;;;;;;;;;;;;;;;;;ACxDtB,MAAM,yBAAyB;CAerC;AAEM,MAAM,cAAe,SAAQ,yBAAyB;IAEzD,YAAY,IAA+B;QACvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC9C,CAAC;IAED,IAAW,QAAQ;QAEf,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YACzE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;IAED,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE;YAC3B,OAAO;SACV;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACzD;IACL,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;AC7EqD;AAGW;;;;;;;ICH7D,0EAAyD;IAAA,uEAAM;IAAA,uDAA8B;IAAA,4DAAO;IAChG,6EAAiE;IAAzB,oUAAwB;IAC5D,uDACJ;IAAA,4DAAS;IACb,4DAAM;;;IAJyD,0DAA8B;IAA9B,kGAA8B;IAErF,0DACJ;IADI,+GACJ;;;IAJR,yEAA0C;IACtC,yHAIM;IACV,4DAAM;;;IALoC,0DAAiB;IAAjB,oFAAiB;;ADYpD,MAAM,sBAAuB,SAAQ,6DAAY;IAQpD,YAAmB,OAAoB,EAAS,KAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAN7D,gBAAW,GAAW,IAAI,CAAC;QAC3B,kBAAa,GAAW,CAAC,CAAC;QAEnC,gBAAW,GAAY,KAAK,CAAC;QAC7B,iBAAY,GAAQ,IAAI,CAAC;IAIzB,CAAC;IAED,QAAQ;QACJ,IAAI,EAAE,GAAW,iEAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,EAAE,IAAI,GAAG,EAAE;YACX,IAAI,IAAI,CAAC,YAAY;gBAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SACrC;IACL,CAAC;IAED,YAAY;QACR,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YACxB,iEAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAChD;aAAM;YACH,iEAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,YAAY;YAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;;4FAjCQ,sBAAsB;oHAAtB,sBAAsB;QCbnC,kHAMM;QAGN,yEAA4B;QACxB,yEAAuC;QACnC,yEAAmC;QAC/B,yHACJ;QAAA,4DAAM;QAEN,yEAAmC;QAC/B,mnCACJ;QAAA,4DAAM;QAEN,yEAAqC;QACjC,4EAAoC;QAChC,qFACJ;QAAA,4DAAS;QAET,6EAAoC;QAChC,qFACJ;QAAA,4DAAS;QAET,6EAAiE;QAC7D,0FACJ;QAAA,4DAAS;QACb,4DAAM;QAEN,0EAAgC;QAC5B,0EAAsC;QAClC,2EAAsC;QAClC,6EAAoB;QAChB,wEAAmC;QAEnC,wEACJ;QAAA,4DAAQ;QACZ,4DAAM;QAEN,2EAAsC;QAClC,6EAAoB;QAChB,wEAAmC;QAEnC,mFACJ;QAAA,4DAAQ;QACZ,4DAAM;QAEN,2EAAsC;QAClC,6EAAoB;QAChB,wEAAmC;QAEnC,8EACJ;QAAA,4DAAQ;QACZ,4DAAM;QAEN,2EAAsC;QAClC,6EAAoB;QAChB,wEAAmC;QAEnC,+EACJ;QAAA,4DAAQ;QACZ,4DAAM;QACV,4DAAM;QAEN,8EAA6C;QACzC,4EACJ;QAAA,4DAAS;QACb,4DAAM;QAEN,2EAAiC;QAC7B,2EAAuC;QACnC,2EAAyE;QACrE,iGACJ;QAAA,4DAAM;QAEN,2EAAuC;QACnC,wEACJ;QAAA,4DAAM;QACV,4DAAM;QAEN,2EAAuC;QACnC,2EAAyE;QACrE,2EAAoC;QAChC,2EAA0C;QACtC,2EAA+E;QAC3E,6EACJ;QAAA,4DAAM;QAEN,2EAA0C;QACtC,uFACJ;QAAA,4DAAM;QAEN,2EAA0C;QACtC,8EACJ;QAAA,4DAAM;QAEN,2EAA0C;QACtC,+EACJ;QAAA,4DAAM;QAEN,2EAA0C;QACtC,sFACJ;QAAA,4DAAM;QACV,4DAAM;QAEN,2EAA0C;QACtC,2EAA+E;QAC3E,qEAAG;QACC,+ZACJ;QAAA,4DAAI;QAEJ,yEAAO;QACH,yEAAO;QACH,sEAAI;QACA,sEAAI;QAAA,sEAAK;QAAA,4DAAK;QACd,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QACrB,sEAAI;QAAA,0EAAI;QAAA,4DAAK;QACb,sEAAI;QAAA,8EAAQ;QAAA,4DAAK;QACjB,sEAAI;QAAA,+DAAG;QAAA,4DAAK;QAChB,4DAAK;QACT,4DAAQ;QAER,yEAAO;QACH,sEAAI;QACA,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QACrB,sEAAI;QAAA,yEAAW;QAAA,uEAAW;QAAA,4DAAI;QAAA,4DAAK;QACnC,sEAAI;QAAA,sNAAmG;QAAA,4DAAK;QAC5G,sEAAI;QAAA,mEAAO;QAAA,4DAAK;QAChB,sEAAI;QAAA,gEAAI;QAAA,4DAAK;QACjB,4DAAK;QAEL,sEAAI;QACA,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QACrB,sEAAI;QAAA,yEAAW;QAAA,uEAAW;QAAA,4DAAI;QAAA,4DAAK;QACnC,sEAAI;QAAA,sNAAmG;QAAA,4DAAK;QAC5G,sEAAI;QAAA,mEAAO;QAAA,4DAAK;QAChB,sEAAI;QAAA,gEAAI;QAAA,4DAAK;QACjB,4DAAK;QAEL,sEAAI;QACA,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QACrB,sEAAI;QAAA,0EAAW;QAAA,wEAAW;QAAA,4DAAI;QAAA,4DAAK;QACnC,uEAAI;QAAA,uNAAmG;QAAA,4DAAK;QAC5G,uEAAI;QAAA,oEAAO;QAAA,4DAAK;QAChB,uEAAI;QAAA,iEAAI;QAAA,4DAAK;QACjB,4DAAK;QAEL,uEAAI;QACA,uEAAI;QAAA,yEAAY;QAAA,4DAAK;QACrB,uEAAI;QAAA,0EAAW;QAAA,wEAAW;QAAA,4DAAI;QAAA,4DAAK;QACnC,uEAAI;QAAA,uNAAmG;QAAA,4DAAK;QAC5G,uEAAI;QAAA,oEAAO;QAAA,4DAAK;QAChB,uEAAI;QAAA,iEAAI;QAAA,4DAAK;QACjB,4DAAK;QAEL,uEAAI;QACA,uEAAI;QAAA,yEAAY;QAAA,4DAAK;QACrB,uEAAI;QAAA,0EAAW;QAAA,wEAAW;QAAA,4DAAI;QAAA,4DAAK;QACnC,uEAAI;QAAA,uNAAmG;QAAA,4DAAK;QAC5G,uEAAI;QAAA,oEAAO;QAAA,4DAAK;QAChB,uEAAI;QAAA,iEAAI;QAAA,4DAAK;QACjB,4DAAK;QACT,4DAAQ;QACZ,4DAAQ;QACZ,4DAAM;QAEN,4EAA0C;QACtC,4FACJ;QAAA,4DAAM;QAEN,4EAA0C;QACtC,uFACJ;QAAA,4DAAM;QAEN,4EAA0C;QACtC,wFACJ;QAAA,4DAAM;QAEN,4EAA0C;QACtC,2FACJ;QAAA,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,4EAAuC;QACnC,4EAAuC;QACnC,8QAAgI;QAAA,kEAAM;QAAA,kEAAM;QAE5I,8QAAoJ;QAAA,kEAAM;QAAA,kEAAM;QAEhK,6RAAqI;QAAA,kEAAM;QAAA,kEAAM;QAEjJ,8PAA0H;QAAA,kEAAM;QAAA,kEAAM;QAEtI,sRAAwI;QAAA,kEAAM;QAAA,kEAAM;QAEpJ,+KACJ;QAAA,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,4EAAkC;QAC9B,uJACJ;QAAA,4DAAM;QACV,4DAAM;QACV,4DAAM;;QAnNuB,uEAAW;;;;;;;;;;;;;;;;;;;;;ACCK;AACqB;AACY;;AAQvE,MAAM,mBAAmB;;sFAAnB,mBAAmB;gHAAnB,mBAAmB;oHALnB,CAAC,yDAAY,EAAC,qFAAoB,CAAC;mIAKnC,mBAAmB,mBAJb,6EAAsB,aAD3B,yDAAY,EAAC,qFAAoB,aAEjC,6EAAsB;;;;;;;;;;;;;;;;;;;;;ACRD;AAEnC,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,2CAAmB;IACnB,yCAAiB;AACrB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAEM,MAAM,cAAc;IAA3B;QACI,SAAI,GAAS,IAAI,CAAC;QAClB,eAAU,GAAe,IAAI,UAAU,EAAE,CAAC;IAC9C,CAAC;CAAA;AAEM,MAAM,UAAU;IAAvB;QACa,0BAAqB,GAAyB,oBAAoB,CAAC,OAAO,CAAC;QACpF,eAAU,GAAyB,oBAAoB,CAAC,MAAM,CAAC;QAC/D,sBAAiB,GAAyB,oBAAoB,CAAC,MAAM,CAAC;QACtE,4BAAuB,GAAyB,oBAAoB,CAAC,MAAM,CAAC;QAC5E,qBAAgB,GAAyB,oBAAoB,CAAC,MAAM,CAAC;QAErE,oBAAe,GAAW,IAAI,CAAC;IAgBnC,CAAC;IAdG,aAAa;QACT,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC;QACtD,IAAI,CAAC,uBAAuB,GAAG,oBAAoB,CAAC,OAAO,CAAC;QAC5D,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,CAAC,OAAO,CAAC;IACzD,CAAC;IAGD,UAAU;QACN,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CAAC;QACrD,IAAI,CAAC,uBAAuB,GAAG,oBAAoB,CAAC,MAAM,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACxD,CAAC;CACJ;AAoCD,IAAY,uBAKX;AALD,WAAY,uBAAuB;IAC/B,4CAAiB;IACjB,oDAAyB;IACzB,wDAA6B;IAC7B,4DAAiC;AACrC,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,QAKlC;AASM,MAAM,sBAA0B,SAAQ,+CAAgB;IAE3D;;;QAGI;IACJ,WAAW;QACP,MAAM,IAAI,GAAQ,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9F0E;AAG9C;AAIO;;;;;;;;;;ICChB,yEAA8C;IAC1C,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;;;IAEN,yEAA6C;IACzC,8DAAK;IAAL,sEAAK;IACD,qEAA8G;IAClH,4DAAM;IACV,4DAAM;;;;;;IAblB,0EAA8J;IAC1J,0EAA+C;IAC3C,0EAA6E;IAA/B,4XAA8B;IACxE,8HAIM;IAEN,8HAIM;IAEN,uDACJ;IAAA,4DAAM;IAEN,0EAAsO;IAArL,wYAAkC;IAAmJ,4DAAM;IAChP,4DAAM;IAEN,0EAAgD;IAC5C,uDACJ;IAAA,4DAAM;IACV,4DAAM;;;;;IAxBmF,wKAAoE;IAG9H,0DAAyB;IAAzB,+FAAyB;IAMzB,0DAAwB;IAAxB,8FAAwB;IAM3C,0DACJ;IADI,uHACJ;IAEqF,0DAAgJ;IAAhJ,oLAAgJ;IAIrO,0DACJ;IADI,gGACJ;;ADVL,MAAM,2BAA4B,SAAQ,6DAAY;IASzD,YAAmB,OAAoB,EAAS,KAAsB,EAAU,IAAgB,EAC5E,SAA2B,EAAU,MAA0D;QAE/G,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAAU,SAAI,GAAJ,IAAI,CAAY;QAC5E,cAAS,GAAT,SAAS,CAAkB;QAAU,WAAM,GAAN,MAAM,CAAoD;QALnH,iBAAY,GAAwB,EAAE,CAAC;QAEvC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAO7C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAErC,IAAI,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC;YAChF,IAAI,UAAU,EAAE;gBACZ,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC7B,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;aAChC;SACJ;IACL,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,GAAsB;QAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,cAAc;QACV,IAAI,CAAC,WAAW,CAAC;YACb,MAAM,EAAE,cAAc;YACtB,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC,CAAC;IACP,CAAC;IAED,SAAS;QACL,IAAI,CAAC,WAAW,CAAC;YACb,MAAM,EAAE,SAAS;SACpB,CAAC,CAAC;IACP,CAAC;IACO,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,8CAA8C,CAAC;aAC7E,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACnC,CAAC,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB,CAAC,KAAkC;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACnB,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU;SACvC;IACL,CAAC;IAED,eAAe,CAAC,GAAW;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,iBAAiB,CAAC,GAAW;QACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;;sGAvEQ,2BAA2B;yHAA3B,2BAA2B;QCnBxC,yEAAkC;QAC9B,yEAAwC;QACpC,oEAAoD;QACxD,4DAAM;QAEN,yEAAsC;QAClC,wHAwBM;QACV,4DAAM;QACV,4DAAM;QAEN,yEAAmC;QAC/B,uEAAyF;QAAtE,8IAAS,oBAAgB,IAAC;QACzC,uDACJ;QAAA,4DAAI;QAEJ,uEAAgF;QAA7D,8IAAS,eAAW,IAAC;QACpC,uDAEA;QAAA,0EAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,qEAAqH;QACzH,4DAAM;QACV,4DAAM;QACV,4DAAI;QACR,4DAAM;;QA9CO,0DAAwC;QAAxC,2MAAwC;QAItB,0DAAiB;QAAjB,qFAAiB;QA8BxC,0DACJ;QADI,sHACJ;QAGI,0DAEA;QAFA,iHAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzC8C;AAG6E;AACpF;AAGlB;AAEgD;;;;;;;;;;ICV7E,yEAAgD;IAC5C,yEAAuB;IACnB,yEAAgC;IAC5B,yEAAqC;IACjC,yEAA6C;IACzC,oEAA0D;IAC9D,4DAAM;IACN,yEAAkC;IAC9B,uEAA4J;IACxJ,uDACJ;IAAA,4DAAI;IACR,4DAAM;IACV,4DAAM;IAEN,yEAAqC;IACjC,8EAA8E;IAA3B,iUAA0B;IACzE,wDACJ;IAAA,4DAAS;IAET,8EAA8E;IAA3B,iUAA0B;IACzE,wDACJ;IAAA,4DAAS;IAET,8EAAqE;IAAtB,4TAAqB;IAChE,wDACJ;IAAA,4DAAS;IACb,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAxBmB,0DAA8C;IAA9C,uNAA8C;IAI/C,0DACJ;IADI,mHACJ;IAMA,0DACJ;IADI,yHACJ;IAGI,0DACJ;IADI,kHACJ;IAGI,0DACJ;IADI,oHACJ;;ADHT,MAAM,uBAAwB,SAAQ,6DAAY;IAsBrD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,IAAgB,EAChB,KAA4B,EAAU,SAA+B;QACrF,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,SAAI,GAAJ,IAAI,CAAY;QAChB,UAAK,GAAL,KAAK,CAAuB;QAAU,cAAS,GAAT,SAAS,CAAsB;QAdjF,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAgBzD,CAAC;IAxBD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAClC,CAAC;IAED,IAAI,WAAW,CAAC,KAAc;QAC1B,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IACnC,CAAC;IAoBD,QAAQ;QACJ,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACzD,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACnC,IAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAC,CAAC,EAAE;gBACzB,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,eAAe;QACX,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,yBAAyB,CAAC,CAAC;QACxE,IAAI,GAAG;YAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;QAChE,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,mBAAmB,CAAC,CAAC;QAC9D,IAAI,GAAG;YAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC1D,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;QACvD,IAAI,GAAG;YAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACpD,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,kBAAkB,CAAC,CAAC;QAC7D,IAAI,GAAG;YAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC7D,CAAC;IAGO,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,8CAA8C,CAAC;aAC7E,IAAI,CAAC,qDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACnC,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,WAAW;QACP,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SACjC;IACL,CAAC;IAED,eAAe;IACf,CAAC;IAGD,cAAc;QACV,MAAM,OAAO,GAAmB,IAAI,mDAAc,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,GAAkC;QAC7C,MAAM,OAAO,GAAmB,IAAI,mDAAc,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,UAAU,CAAC,uBAAuB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,yBAAyB,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,iEAA4B,CAAC,CAAC,CAAC,gEAA2B,CAAC;QACzK,OAAO,CAAC,UAAU,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,iEAA4B,CAAC,CAAC,CAAC,gEAA2B,CAAC;QACjJ,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,iEAA4B,CAAC,CAAC,CAAC,gEAA2B,CAAC;QACnI,OAAO,CAAC,UAAU,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,iEAA4B,CAAC,CAAC,CAAC,gEAA2B,CAAC;QAC/I,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,SAAS;QACL,MAAM,OAAO,GAAmB,IAAI,mDAAc,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,MAAM,MAAM,GAAuD;gBAC/D,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,gBAAgB,EAAE,YAAY;gBAC9B,WAAW,EAAE,IAAI;gBACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;aAC7C,CAAC;YACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wFAA2B,EAAE,MAAM,CAAC,CAAC;YAC1E,IAAI,CAAC,SAAS,CAAC,WAAW;iBACrB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,CAAC,GAAsB,EAAE,EAAE;gBAClC,IAAG,GAAG,EAAE;oBACJ,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;qBACpB;yBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE;wBACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;qBACzC;iBACJ;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1B,CAAC,CAAC,CAAC;SACV;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SAC1B;IACL,CAAC;;8FA7HQ,uBAAuB;qHAAvB,uBAAuB;QCtBpC,oHA6BM;;QA7BuB,iFAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCD;AACuB;AACjB;AACW;AACJ;AACkB;AACC;AAChC;AACiC;;AAwBvE,MAAM,oBAAoB;;wFAApB,oBAAoB;iHAApB,oBAAoB;qHApBpB;YACL,yDAAY;YACZ,qFAAoB;YACpB,+DAAmB;YACnB,sFAAmB;YACnB,yDAAY;SACf;mIAcQ,oBAAoB,mBAZzB,+EAAuB;QACvB,wFAA2B;QAC3B,yEAAoB;QACpB,qEAAkB,aAVlB,yDAAY;QACZ,qFAAoB;QACpB,+DAAmB;QACnB,sFAAmB;QACnB,yDAAY,aASZ,+EAAuB;QACvB,yEAAoB;QACpB,qEAAkB;;;;;;;;;;;;;;;;;;;;;;;;;ACpBR;AAEkB;AAEe;AACkB;AACgB;AAClD;;;;AAG5B,MAAM,qBAAqB;IAuH9B,YAAoB,IAAgB,EAAU,KAAsB;QAAhD,SAAI,GAAJ,IAAI,CAAY;QAAU,UAAK,GAAL,KAAK,CAAiB;QArHpE,mBAAc,GAAW,gBAAgB,CAAC;QAG1C,4BAAuB,GAAY,KAAK,CAAC;QAEzC,oBAAe,GAAuB,IAAI,+CAAa,CAAM,CAAC,CAAC,CAAC;QAEhE,WAAM,GAAuC,IAAI,CAAC;QAClD,YAAO,GAAwC,IAAI,CAAC;QAEpD,oBAAe,GAAG,SAAS,CAAC;QAC5B,gBAAW,GAAY,KAAK,CAAC,CAAC,+BAA+B;QAGrD,sBAAiB,GAAwC,EAAE,CAAC;QAC5D,gBAAW,GAAmB,IAAI,CAAC;QAwGvC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACzC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;gBAC7C,+BAA+B;gBAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC5B;iBAAM;gBACH,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACrC;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IApHD,IAAI,UAAU;QACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;YACzB,OAAO,IAAI,CAAC;SACf;QACD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YAC7B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE;YACnC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YAC7B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sBAAsB;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;YAChC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,EAAE;YAC7C,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,wBAAwB;QACpB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC3B,OAAO,KAAK,CAAC;SAChB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,kBAAkB,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,eAAe;QACX,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE;YAC9C,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sBAAsB;QAClB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YACzB,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,mBAAmB,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,iBAAiB;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,EAAE;YACnD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,wBAAwB;QACpB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC3B,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,kBAAkB,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,SAAS;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,kBAAkB,EAAE;YAC/C,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACnB,OAAO,KAAK,CAAC;SAChB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAqBD,IAAI,2BAA2B;QAC3B,uBAAuB;QACvB,OAAO,QAAQ,CAAC,IAAI,IAAI,WAAW;eAC5B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;eAC9B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhD,CAAC;IAED,iEAAiE;IACjE,4CAA4C;IAC5C,eAAe;QAEX,IAAI,IAAI,CAAC,2BAA2B,EAAE;YAClC,SAAS;YACT,4DAAsB,EAAE,CAAC,CAAC,sCAAsC;YAChE,6BAA6B;YAC7B,iEAA2B,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,uCAAuC;gBACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO,GAAG,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,+FAAqC,CAAC,IAAI,CAAC,CAAC;YAC5C,iGAAuC,CAAC,IAAI,CAAC,CAAC;SACjD;IACL,CAAC;IAEO,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAC3D,OAAO;SACV;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,8BAA8B,EAAE,IAAI,CAAC;aACxD,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,GAAG,EAAE;YAEZ,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,WAAW,CAAC,MAAc;QAC9B,IAAI,QAAQ,GAAkB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,IAAI,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,qCAAqC;QACrC,6BAA6B;QAC7B,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAW,IAAI,CAAC;QAC3B,IAAI,MAAM,GAAW,IAAI,CAAC;QAE1B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,OAAO,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE3C,QAAQ,eAAe,CAAC,CAAC,CAAC,EAAE;oBACxB,KAAK,SAAS;wBACV,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpC,MAAM;oBACV,KAAK,SAAS;wBACV,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzC,MAAM;oBACV;wBACI,MAAM;iBACb;aACJ;SACJ;QAED,IAAI,OAAO,EAAE;YACT,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;SACnC;QAED,MAAM,SAAS,GAAiC;YAC5C,IAAI;YACJ,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,mEAA8B;YACpC,MAAM,EAAE,IAAI;YACZ,MAAM;YACN,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;SACjB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;YACrC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;SACJ;IACL,CAAC;IAEO,kBAAkB,CAAC,MAAoC;QAC3D,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAC3D,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACnC,OAAO,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAC,EAAE;YACA,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,qBAAqB,CAAC,GAAW;QAC7B,MAAM,IAAI,GAAiC;YACvC,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,yEAAoC;YAC1C,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;SACJ;IACL,CAAC;IAED,uBAAuB,CAAC,GAAW;QAC/B,MAAM,IAAI,GAAiC;YACvC,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,2EAAsC;YAC5C,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;SACJ;IACL,CAAC;IAEO,qBAAqB,CAAC,IAAkC;QAC5D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9E,OAAO;SACV;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,sBAAsB;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1D,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;IACN,CAAC;IAED,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsC,qCAAqC,CAAC;aACpF,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;YAC7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACX,CAAC;IAED,aAAa;QAET,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsC,qCAAqC,CAAC;aACpF,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACnB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACX,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqC,oCAAoC,CAAC;aAClF,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACX,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,GAAG,GAAwC,IAAI,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,EAAE;SACL;aAAM,IAAI,CAAC,OAAO,EAAE;YACjB,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAChC;aAAM;YACH,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;SAClE;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,IAAmB,EAAE,OAAmB,IAAI;QACrD,MAAO,CAAC,SAAS,GAAS,MAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAExD,MAAM,IAAI,GAAQ,EAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAC,CAAC;QAEzC,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SACpB;QACK,MAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,OAAuB;QAC9B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAEO,gBAAgB;QACpB,0EAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC;IAEO,eAAe;QACnB,OAAO,4EAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,mDAAc,EAAE,CAAC;QACrC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAGO,eAAe,CAAC,MAAoC;QACxD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,sBAAsB,CAAC,EAClE;YACE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YACnD,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,IAAI,gEAA2B;eAClE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,YAAY,CAAC,EAC3D;YACE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,iBAAiB,IAAI,gEAA2B;eACzE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,mBAAmB,CAAC,EAClE;YACE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,uBAAuB,IAAI,gEAA2B;eAC/E,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,yBAAyB,CAAC,EACxE;YACE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,gBAAgB,IAAI,gEAA2B;eACxE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,kBAAkB,CAAC,EACjE;YACE,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,kBAAkB;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,IAAI,iEAA4B,EAAE;YACjF,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,YAAY;QACR,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,IAAI,iEAA4B,EAAE;YAC1E,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,gBAAgB,IAAI,iEAA4B,EAAE;YAChF,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,wBAAwB;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,uBAAuB,IAAI,iEAA4B,EAAE;YACvF,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,sBAAsB;QAClB,uBAAuB;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,qBAAqB,IAAI,iEAA4B,EAAE;YACrF,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;;0FA/cQ,qBAAqB;sHAArB,qBAAqB,WAArB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;AClBoB;AAKlB;;;;;;;ICMhC,qEAAmC;IAC/B,qEAAI;IAAA,uDAAe;IAAA,4DAAK;IACxB,qEAAI;IAAA,uDAAiB;IAAA,4DAAK;IAC1B,qEAAI;IAAA,uDAAsB;IAAA,4DAAK;IAC/B,qEAAI;IAAA,uDAA+B;IAAA,4DAAK;IACxC,qEAAI;IAAA,wDAAyB;IAAA,4DAAK;IACtC,4DAAK;;;;IALG,0DAAe;IAAf,+EAAe;IACf,0DAAiB;IAAjB,iFAAiB;IACjB,0DAAsB;IAAtB,sFAAsB;IACtB,0DAA+B;IAA/B,sGAA+B;IAC/B,0DAAyB;IAAzB,gGAAyB;;ADF9B,MAAM,oBAAqB,SAAQ,6DAAY;IAalD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,KAA4B;QAC5C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,UAAK,GAAL,KAAK,CAAuB;IAEhD,CAAC;IAbD,IAAa,OAAO,CAAC,KAAY;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAUO,UAAU,CAAC,OAAe;QAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACnC,SAAS,CAAC,GAAE,EAAE;YACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACX,CAAC;IAED,mBAAmB,CAAC,MAAoC;QACpD,OAAO,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,aAAa,CAAC,MAAoC;QAC9C,OAAO,MAAM,EAAE,IAAI,CAAC;IACxB,CAAC;;wFAhCQ,oBAAoB;kHAApB,oBAAoB;QCfjC,wEAAO;QACH,wEAAO;QACP,qEAAI;QACA,qEAAI;QAAA,uDAA+B;QAAA,4DAAK;QACxC,qEAAI;QAAA,uDAAiC;QAAA,4DAAK;QAC1C,qEAAI;QAAA,uDAAkC;QAAA,4DAAK;QAC3C,qEAAI;QAAA,wDAAqC;QAAA,4DAAK;QAC9C,sEAAI;QAAA,wDAA+B;QAAA,4DAAK;QAC5C,4DAAK;QACL,4DAAQ;QAER,yEAAO;QACP,iHAMK;QACL,4DAAQ;QACZ,4DAAQ;;QAjBI,0DAA+B;QAA/B,gGAA+B;QAC/B,0DAAiC;QAAjC,kGAAiC;QACjC,0DAAkC;QAAlC,mGAAkC;QAClC,0DAAqC;QAArC,sGAAqC;QACrC,0DAA+B;QAA/B,gGAA+B;QAKhB,0DAAU;QAAV,gFAAU;;;;;;;;;;;;;;;;;;;;;;;ACXrC;AAIA;;;;;AAUM,MAAO6B,kBAAP,SAAkCF,6DAAlC,CAA8C;AAChD1B,cAAmB6B,OAAnB,EAAgDC,KAAhD,EACmBC,KADnB,EAEoBC,QAFpB,EAGsCC,QAHtC,EAGwD;AACpD,UAAMJ,OAAN,EAAeC,KAAf;AAJe;AAA6B;AAC7B;AACC;AACkB;AAErC;;AAEDI,UAAQ;AACJ,SAAKC,MAAL;AACA,SAAKC,KAAL;AACH;;AAGOA,OAAK;AACT,QAAG,CAAC,KAAKL,KAAL,CAAWM,iBAAX,EAAJ,EACA;AACI;AACH;;AAED,QAAIC,MAAM,GAAG,KAAKN,QAAL,CAAcO,aAAd,CAA4B,QAA5B,CAAb;AACAD,UAAM,CAACE,GAAP,GAAa,+CAA+C,KAAKV,KAAL,CAAWW,UAAX,CAAsBC,WAAW,EAA7F;AACAJ,UAAM,CAACK,KAAP,GAAe,IAAf;AACA,SAAKX,QAAL,CAAcY,WAAd,CAA0B,KAAKX,QAAL,CAAcY,IAAxC,EAA8CP,MAA9C;AAGA,UAAMQ,GAAG,GAAG;;gCAAZ;AAGA,SAAKC,SAAL,CAAeD,GAAf;AACH;;AAGOX,QAAM;AACV,QAAG,CAAC,KAAKJ,KAAL,CAAWiB,KAAX,EAAJ,EACA;AACI;AACH;;AAED,UAAMF,GAAG,GAAG;;;;;;;uDAOmC,KAAKhB,KAAL,CAAWW,UAAX,CAAsBQ,KAAK,KAP1E;AAQA,SAAKF,SAAL,CAAeD,GAAf;AACH;;AAEOC,WAAS,CAACG,UAAD,EAAkB;AAC/B,QAAIZ,MAAM,GAAG,KAAKN,QAAL,CAAcO,aAAd,CAA4B,QAA5B,CAAb,CAD+B,CAE/B;;AACAD,UAAM,CAACa,IAAP,GAAcD,UAAd;AAEA,SAAKlB,QAAL,CAAcY,WAAd,CAA0B,KAAKX,QAAL,CAAcY,IAAxC,EAA8CP,MAA9C;AACH;;AAxD+C;;;mBAAvCV,oBAAkBN,+DAAAA,CAAAA,+DAAAA,GAAAA,+DAAAA,CAAAA,uEAAAA,GAAAA,+DAAAA,CAAAA,2EAAAA,GAAAA,+DAAAA,CAAAA,oDAAAA,GAAAA,+DAAAA,CAIPK,qDAJO;AAIC;;;QAJnBC;AAAkBwB;AAAAC,aAAAA,wEAAAA;AAAAC;AAAAC;AAAAC;AAAAC;;;;;;;;;;;;;;;;;;;;;ACbgC;;;;;;ICmB3C,wEAAoD;IAChD,uDACJ;IAAA,qEAAe;;;IADX,0DACJ;IADI,mGACJ;;;IAEA,wEAAoD;IAChD,uDACJ;IAAA,qEAAe;;;IADX,0DACJ;IADI,qGACJ;;;;;IAVR,wEAA4P;IAA9N,oZAA6C;IACvE,qEAA8J;IAE9J,0EAAgF;IAC5E,0IAEe;IAEf,0IAEe;IACnB,4DAAM;IAEN,0EAAgF;IAC5E,uDACJ;IAAA,4DAAM;IACV,4DAAI;;;;IAhBmJ,0MAAoG;IAC3N,0DAAkG;IAAlG,oOAAkG;IAG3G,0DAAmC;IAAnC,kGAAmC;IAInC,0DAAmC;IAAnC,kGAAmC;IAMlD,0DACJ;IADI,uHACJ;;;;IAhChB,yEAA0H;IACtH,yEAAwE;IAAlC,2RAAS,8BAAuB,IAAC;IACnE,yEAA6C;IACzC,uDACJ;IAAA,4DAAM;IAEN,yEAAoC;IAChC,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAA4C;IAA5C,yEAA4C;IACxC,yEAAmC;IAC/B,gHAgBI;IACR,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IApCuB,oHAAyD;IAG1E,0DACJ;IADI,6HACJ;IAa0G,0DAAiB;IAAjB,0FAAiB;;ADH5H,MAAM,gBAAiB,SAAQ,6DAAY;IAK9C,YAAmB,OAAoB,EAAE,KAAsB;QAC3D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAGnC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,mCAAkC;QAChF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW;IACX,CAAC;IAED,UAAU,CAAC,EAAU;QACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC;IAGD,UAAU,CAAC,EAAO;QACd,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACrC;IACL,CAAC;;gFA/BQ,gBAAgB;8GAAhB,gBAAgB;8IAAhB,sBAAkB;;QCd/B,6GAoCM;;QApCkF,qIAAgC;;;;;;;;;;;;;;;;;;;;;ACC3E;AACM;AACE;;AAgB9C,MAAM,aAAa;;0EAAb,aAAa;0GAAb,aAAa;8GAZb;YACL,yDAAY;YACZ,+DAAmB;SACtB;mIASQ,aAAa,mBAJlB,gEAAgB,aAPhB,yDAAY;QACZ,+DAAmB,aAGnB,gEAAgB;;;;;;;;;;;;;;;;;;;;;;;ACZ+B;AAUlB;AACS;;;;AAIvC,MAAM,sBAAsB;IA+E/B,YAAoB,IAAgB,EAAU,KAAsB;QAAhD,SAAI,GAAJ,IAAI,CAAY;QAAU,UAAK,GAAL,KAAK,CAAiB;QAZ5D,eAAU,GAAsC,EAAE,CAAC;QACnD,gBAAW,GAAuB,EAAE,CAAC;QACrC,cAAS,GAAsB,EAAE,CAAC;QAG1C,qFAAqF;QACrF,iDAAiD;QACjD,sCAAiC,GAAkC,IAAI,uDAAY,EAAmB,CAAC;QAEvG,+CAA+C;QAC/C,2BAAsB,GAAkC,IAAI,uDAAY,EAAmB,CAAC;QAGxF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG;YACnB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;SAChB;QACD,IAAI,CAAC,OAAO,EAAE;aACT,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC;IACV,CAAC;IAvFD,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,eAAe,CAAC,KAAsB;QACtC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAE,CAAC,KAAK,CAAC,OAAO,EAAE;YAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;aAAM;YACH,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtD;IACL,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAwB;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,CAAC,KAAyB;QACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS,CAAC,KAAwC;QAClD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,oBAAoB;IACpB,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,IAAI,oBAAoB,CAAC,KAAa;QAClC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAa;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACnC,CAAC;IA6BD,aAAa;QACT,IAAI,GAAG,GAAW,qCAAqC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,GAAG,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,EAAC,CAAC,CAAC;IACrF,CAAC;IAED,WAAW;QACP,IAAI,GAAG,GAAW,mCAAmC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAoB,GAAG,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,EAAC,CAAC,CAAC;IACpF,CAAC;IAED,YAAY;QACR,IAAI,GAAG,GAAW,oCAAoC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,OAAO;QACH,OAAO,yCAAG,CACN,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,aAAa,EAAE,EACpB,IAAI,CAAC,WAAW,EAAE,CACrB;aACI,IAAI,CACD,oDAAI,CAAC,CAAC,CAAC,EACP,mDAAG,CAAC,GAAG,CAAC,EAAE;YACN,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,EACF,mDAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CACnC,CAAC;IACV,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;YACxE,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,CAAC;YACrD,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC;YACtF,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,CAAC;SACrF;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACnD;IACL,CAAC;IAED,mBAAmB,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,0CAA0C,SAAS,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,2BAA2B;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IACvE,CAAC;IAED,+BAA+B;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACnE,CAAC;IAED,cAAc,CAAC,OAA2B;QACtC,IAAI,GAAG,GAAG,oCAAoC,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,mBAAmB,CAAC,OAA2B;QAC3C,IAAI,GAAG,GAAG,qCAAqC,CAAC;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACT,IAAI,GAAG,GAAG,wCAAwC,CAAC;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;;4FAlKQ,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;ACfmB;AAKzB;;;;;;;ICwBL,wEAAuG;IACnG,uDACJ;IAAA,4DAAI;;;IAF6D,oLAAqC;IAClG,0DACJ;IADI,yGACJ;;;IAEA,0EAAoE;IAChE,qEAAsD;IAC1D,4DAAM;;;IADG,0DAA0C;IAA1C,2MAA0C;;;IAK3D,0EAA+D;IAC3D,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,8GACJ;;;;IAzChB,wEAA2B;IACvB,yEAA6B;IACzB,yEAAqC;IACjC,yEAA+C;IAC3C,uDACJ;IAAA,4DAAM;IAEN,yEAAiD;IAC7C,uDACJ;IAAA,4DAAM;IACV,4DAAM;IAEN,yEAAsC;IAClC,uDAAgB;IAAA,gEAAM;IACtB,wDACJ;IAAA,4DAAM;IAEN,0EAA8C;IAC1C,0EAAsC;IAClC,0EAA2C;IACvC,0EAAmC;IAC/B,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAA6G;IACjH,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAA4C;IAA5C,2EAA4C;IACxC,iIAEI;IAEJ,qIAEM;IACV,4DAAM;IACV,4DAAM;IAEN,qIAEM;IACV,4DAAM;IAEN,2EAAsC;IAClC,yEAAmG;IAC/F,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IArDC,0DACJ;IADI,4FACJ;IAGI,0DACJ;IADI,4FACJ;IAIA,0DAAgB;IAAhB,8FAAgB;IAChB,0DACJ;IADI,sHACJ;IAcmD,0DAA4B;IAA5B,+FAA4B;IAIxB,0DAA2B;IAA3B,gIAA2B;IAMlC,0DAAqB;IAArB,wFAAqB;IAM1D,0DAAgC;IAAhC,8IAAgC;IAC/B,0DAEA;IAFA,8GAEA;;ADnCb,MAAM,uBAAwB,SAAQ,6DAAY;IAMrD,YAAmB,OAAoB,EAAE,KAAsB;QAC3D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAFvC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAKjD,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW;IACX,CAAC;;8FAfQ,uBAAuB;qHAAvB,uBAAuB;QCbpC,uIAyDe;;QAzDA,0EAAU;;;;;;;;;;;;;;;;;;;;;;ACCoB;AACA;AACuB;AACU;;AAiBvE,MAAM,oBAAoB;;wFAApB,oBAAoB;iHAApB,oBAAoB;sHAHlB,EAAE,YAXJ;YACL,yDAAY;YACZ,qFAAoB;YACpB,yDAAY;SACf;mIAUQ,oBAAoB,mBARzB,+EAAuB,aALvB,yDAAY;QACZ,qFAAoB;QACpB,yDAAY,aAMZ,+EAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBuB;AAIzB;AAEsB;;;;;;;;;;;ICUnC,yEAA0J;IACtJ,0EAA+B;IAC3B,0EAA6C;IACzC,uDACJ;IAAA,4DAAM;IAEN,0EAA6C;IACzC,uDACJ;IAAA,4DAAM;IACV,4DAAM;IACV,4DAAM;;;;IAViF,kMAAkE;IAG7I,0DACJ;IADI,yHACJ;IAGI,0DACJ;IADI,uHACJ;;;;ADRjB,MAAM,mBAAoB,SAAQ,6DAAY;IAWjD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,IAAe;QAC/B,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,SAAI,GAAJ,IAAI,CAAW;QAPnC,yBAAoB,GAAW,EAAE,CAAC;QAClC,wBAAmB,GAAW,EAAE,CAAC;QAGzB,kBAAa,GAAiB,IAAI,yCAAO,EAAE,CAAC;QAMhD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAE5D,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAEO,OAAO;QACX,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,iCAAiC,CAAC;aAC7D,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC/B,wDAAQ,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK;QACpC,CAAC,CAAC,CACL;aACA,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,oBAAoB,GAAG,OAAO,IAAI,CAAC,eAAe,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;YACxF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACpD,CAAC,CAAC,CAAC;IACX,CAAC;;sFAzCQ,mBAAmB;iHAAnB,mBAAmB;QChBhC,yEAA2B;QACvB,yEAAkC;QAC9B,0EAAS;QACL,uEAAgH;;QAEhH,oEAAiI;QACrI,4DAAU;QACd,4DAAM;QAEN,yEAAuB;QACnB,yEAAiC;QAC7B,wEAAgH;QAC5G,uDACJ;QAAA,4DAAK;QAEL,0EAAiC;QAC7B,iHAUM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;;QA3Bc,0DAAoF;QAApF,0QAAoF;QAEvF,0DAA0E;QAA1E,sMAA0E;QAMnC,0DAAmE;QAAnE,4LAAmE;QAC3G,0DACJ;QADI,uGACJ;QAGsD,0DAAsB;QAAtB,yJAAsB;;;;;;;;;;;;;;;;;;;;;;;ACf3C;AACA;AACiB;AACH;AACmB;;AAmBvE,MAAM,gBAAgB;;gFAAhB,gBAAgB;6GAAhB,gBAAgB;kHAHd,EAAE,YAZJ;YACL,yDAAY;YACZ,qFAAoB;YACpB,yDAAY;YACZ,wEAAiB;SACpB;mIAUQ,gBAAgB,mBARrB,sEAAmB,aANnB,yDAAY;QACZ,qFAAoB;QACpB,yDAAY;QACZ,wEAAiB,aAMjB,sEAAmB;;;;;;;;;;;;;;;;;;;;;;;AClB2B;;;;;;;AAc/C,MAAM,qBAAsB,SAAQ,6DAAY;IAMnD,YAAY,OAAoB,EAAE,KAAsB,EAAU,EAAe,EAAU,SAA2B,EAClG,MAAqD;QACrE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFwC,OAAE,GAAF,EAAE,CAAa;QAAU,cAAS,GAAT,SAAS,CAAkB;QAClG,WAAM,GAAN,MAAM,CAA+C;QALzE,SAAI,GAAW,qBAAqB,CAAC,oBAAoB,EAAE,CAAC;QAEpD,SAAI,GAAW,CAAC,CAAC;QAMrB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,SAAS,EAAE,EAAE;SAChB,CAAC;IACN,CAAC;IAED,MAAM;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;QAC/D,IAAI,GAAG,EAAE;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC1C;aAAM;YACH,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACrB,SAAS,EAAE,IAAI;iBAClB,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,oBAAoB,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;iBAAM;gBACH,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,MAAM,MAAM,GAA6B,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;gBAClF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAChC;SACJ;IACL,CAAC;IAED,KAAK,CAAC,GAAkB;QACpB,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACjD,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;IACL,CAAC;IAEO,MAAM,CAAC,oBAAoB;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClE,CAAC;IAED,eAAe;QACX,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;;0FApDQ,qBAAqB;mHAArB,qBAAqB;QCflC,yEAAyE;QAAxB,gJAAS,iBAAa,IAAC;QACpE,yEAAiC;QAC7B,yEAA+B;QAC3B,2EAA0C;QACtC,uDAAiC;QAAA,yEAAQ;QAAA,uDAAQ;QAAA,4DAAS;QAC9D,4DAAQ;QAER,yEAAiC;QAC7B,sEAA4E;QAChF,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,yEAAkC;QAC9B,6EAAmE;QAA3D,8IAAS,YAAQ,IAAC;QACtB,wDACJ;QAAA,4DAAS;QACb,4DAAM;QACV,4DAAM;;QAlBoB,mFAAsB;QAIhC,0DAAiC;QAAjC,4GAAiC;QAAQ,0DAAQ;QAAR,yEAAQ;QAWrD,0DACJ;QADI,8GACJ;;;;;;;;;;;;;;;;;;;;;ACfqC;AACmB;AACC;;AAgB1D,MAAM,qBAAqB;;0FAArB,qBAAqB;kHAArB,qBAAqB;sHAbrB;YACL,yDAAY;YACZ,uDAAW;YACX,+DAAmB;SACtB;mIASQ,qBAAqB,mBAP1B,4EAAqB,aALrB,yDAAY;QACZ,uDAAW;QACX,+DAAmB,aAMnB,4EAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;ACf7B;;GAEG;AAC6H;AAC3B;AAGxC;;;;;;;;;;;ICF7C,yEAAuE;IACnE,yEAAuC;IACnC,uDACJ;IAAA,4DAAM;IAEN,0FAAsF;IAAxB,4VAAuB;IAAC,4DAAuB;IACjH,4DAAM;;;IAJE,0DACJ;IADI,4LACJ;IAEsB,0DAAuC;IAAvC,uGAAuC;;;;IAY7D,0EAA0H;IACtH,0EAAwB;IACpB,6EAAkF;IAA1E,gWAAkC;IACtC,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IACb,4DAAM;IACV,4DAAM;;;IATM,0DAEA;IAFA,6GAEA;;;;IAZhB,yEAAsE;IAClE,yEAAuC;IACnC,uDACJ;IAAA,4DAAM;IAEN,sFAA8G;IAAxB,2VAAuB;IAAC,4DAAmB;IAEjI,0IAYM;IACV,4DAAM;;;IAlBE,0DACJ;IADI,yLACJ;IAEkB,0DAAwB;IAAxB,wFAAwB;IAET,0DAAuF;IAAvF,sNAAuF;;;;IAwBxH,0EAA0H;IACtH,0EAAwB;IACpB,6EAAiF;IAAzE,iWAAiC;IACrC,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IACb,4DAAM;IACV,4DAAM;;;IATM,0DAEA;IAFA,8GAEA;;;;IAZhB,yEAAsE;IAClE,yEAAuC;IACnC,uDACJ;IAAA,4DAAM;IAEN,uFAAuH;IAAxB,2VAAuB;IAAC,4DAAmB;IAE1I,0IAYM;IACV,4DAAM;;;IAlBE,0DACJ;IADI,mJACJ;IAEkB,0DAAwB;IAAxB,wFAAwB;IAET,0DAAuF;IAAvF,sNAAuF;;;;IA9C5I,wEAAyI;IACrI,yEAA2E;IAAnC,wVAAkC;IACtE,yEAAuB;IACnB,yEAA2B;IAEvB,mIAMM;IAIN,mIAoBM;IAIN,mIAoBM;IAiBV,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IA1EkC,0DAAoC;IAApC,gJAAoC;IAUpC,0DAAmC;IAAnC,+IAAmC;IAwBnC,0DAAmC;IAAnC,+IAAmC;;;;IA2ChF,0EAA2E;IAAnC,uVAAkC;IACtE,yEAAuB;IACnB,yEAA2B;IACvB,0EAA6B;IACzB,0EAAiC;IAC7B,0EAAmC;IAC/B,qEAA8G;IAClH,4DAAM;IAEN,0EAAoC;IAChC,0EAA+C;IAC3C,uDACJ;IAAA,4DAAM;IAEN,8EAAuF;IAApC,kUAAkB,eAAe,KAAE;IAClF,wDACJ;IAAA,4DAAS;IACb,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IAoBV,4DAAM;;;IAnCiF,0DAAwC;IAAxC,sKAAwC;IAKnG,0DACJ;IADI,gHACJ;IAGI,0DACJ;IADI,wGACJ;;ADhFrB,MAAM,wBAAyB,SAAQ,6DAAY;IAwBtD,YAAY,OAAoB,EAAE,KAAsB,EACpC,MAAc;QAC9B,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADN,WAAM,GAAN,MAAM,CAAQ;QApBzB,iBAAY,GAAY,KAAK,CAAC;QASvC,oBAAe,GAAW,CAAC,CAAC;QAI5B,oBAAe,GAAW,CAAC,CAAC;QAI5B,mBAAc,GAAW,OAAO,CAAC;QAM7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,uDAAY,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,uDAAY,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;IAChI,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjH,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjH,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAChC;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,gBAAgB,CAAC,GAAQ;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,eAAe,CAAC,IAAY;QACxB,OAAO,CAAC,wEAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,GAAQ;QAC3B,GAAG,CAAC,eAAe,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,qBAAqB;QACjB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACnD,CAAC;IAED,sBAAsB;QAClB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACnD,CAAC;IAGD,gBAAgB,CAAC,GAAkB;QAC/B,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;IACL,CAAC;;gGAnFQ,wBAAwB;sHAAxB,wBAAwB;wKAAxB,4BAAwB;;QClBrC,sIA+Ee;QAEf,iNA2Cc;;;QA5HC,gSAAwG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACId;AAIjE;AAEuB;AACgB;;;;;;;;;;;;;ICgBnE,+DAK+C;IAL/C,4FAK+C;IAFxB,kWAAyB;IAGhD,4DAAwB;;;;IALD,6FAA6B;;ADJzD,MAAM,oBAAqB,SAAQ,6DAAY;IAelD,YAAY,OAAoB,EAAE,KAAsB,EACpC,IAAgB,EAAU,SAAwB;QAClE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADN,SAAI,GAAJ,IAAI,CAAY;QAAU,cAAS,GAAT,SAAS,CAAe;QAd7D,UAAK,GAAW,EAAE,CAAC;QAI5B,qBAAgB,GAAY,KAAK,CAAC;QAClC,iBAAY,GAAY,KAAK,CAAC;QAC9B,mBAAc,GAAY,KAAK,CAAC;QAEhC,oBAAe,GAAY,KAAK,CAAC;QAEjC,eAAU,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAC9C,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAM7C,IAAI,CAAC,OAAO,CAAC,2BAA2B;aACnC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,IAAI,EAAE;gBACN,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBACtC,CAAC,EAAE,CAAC,CAAC;aACR;QACL,CAAC,CAAC;IACV,CAAC;IAGD,eAAe;QACX,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAEO,WAAW;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAC5C,gDAAS,CAAC,SAAS,EAAE,OAAO,CAAC;aACxB,IAAI,CACD,oDAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/B,uDAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAC/B,6DAAY,CAAC,GAAG,CAAC,EACjB,0DAAS,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC5C,yDAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC1B,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC;aACA,SAAS,CAAC,CAAC,GAAmB,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC;IACX,CAAC;IAED,WAAW,CAAC,GAAkB,EAAE,MAAc;QAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;aAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACxD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACvB;aAAM;YACH,+BAA+B;SAClC;IACL,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YAE1B,qDAAqD;YACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,OAAO,GAAkB;gBACzB,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChC,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,8EAA6B;aAC7C,CAAC;YACF,IAAI,mBAAmB,GAAG,0EAAkB,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,OAAO,CAAC,CAAC;YAE9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,qBAAqB,mBAAmB,EAAE,CAAC;iBACpE,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;gBACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAGD,UAAU,CAAC,MAAc;QAErB,mDAAmD;QACnD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,OAAO,GAAkB;YACzB,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;YACzB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,8EAA6B;SAC7C,CAAC;QACF,IAAI,mBAAmB,GAAG,0EAAkB,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,mBAAmB,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAChC,CAAC;IAGD,UAAU,CAAC,EAAO;QACd,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACpG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAClC;IACL,CAAC;IAED,SAAS;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;;wFA/IQ,oBAAoB;kHAApB,oBAAoB;;;;;;kJAApB,sBAAkB;;;QCxB/B,yEAA8G;QAC1G,yEAAuB;QACnB,yEAAwB;QACpB,0EAAgE;QAA1B,4IAAU,kBAAc,IAAC;QAC3D,yEAA0B;QACtB,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAA8G;QAClH,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAImD;QAJnD,8EAImD;QAA5C,6RAAS,kCAAiC,IAAC;QAJlD,4DAImD;QAEnD,0EAAmD;QAAxB,0IAAS,iBAAa,IAAC;QAC9C,0EAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,sEAA6G;QACjH,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAO;QAEP,uJAMwB;QAC5B,4DAAM;QACV,4DAAM;QACV,4DAAM;;QApCc,kGAA0C;QAevC,0DAA6C;QAA7C,0GAA6C;QAYhC,0DAAoB;QAApB,oFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BxD;;GAEG;AAE2D;AACS;AAC1B;AAEA;AACiC;AACL;AACX;AACI;AACO;AACH;;AAiB/D,MAAM,iBAAiB;;kFAAjB,iBAAiB;8GAAjB,iBAAiB;kHAdjB;YACL,yDAAY;YACZ,0DAAY;YACZ,qFAAoB;YACpB,gFAAkB;YAClB,wEAAiB;YACjB,4EAAiB;YACjB,mFAAkB;YAClB,gFAAiB;SACpB;mIAKQ,iBAAiB,mBAJX,yEAAoB,EAAE,kFAAwB,aATzD,yDAAY;QACZ,0DAAY;QACZ,qFAAoB;QACpB,gFAAkB;QAClB,wEAAiB;QACjB,4EAAiB;QACjB,mFAAkB;QAClB,gFAAiB,aAGX,yEAAoB,EAAE,kFAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BN;AAIY;AACL;AAChC;AACsB;AAEoB;;;;;;;;;;;ICoB3C,6EAA8I;;;IAAhE,iHAAiD;;;IA+BnI,yEAA0D;IACtD,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IAEN,uDACJ;IAAA,4DAAK;;;;IADD,0DACJ;IADI,iHACJ;;;IATJ,wEAAmE;IAC/D,qJAQK;IACT,qEAAe;;;;IATN,0DAAiC;IAAjC,uGAAiC;;;;;;IA3D1D,yEAAqE;IACjE,yEAAmD;IAC/C,yEAA0C;IACtC,uDACJ;IAAA,4DAAM;IAEN,yEAA8B;IAC1B,uDACJ;IAAA,4DAAM;IAEN,yEAA6B;IACzB,yEAAiC;IAC7B,0EAAmC;IAC/B,4EAAyC;IACrC,wDACJ;IAAA,4DAAQ;IAER,2EAA+C;IAC3C,2EAA6B;IACzB,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAA4G;IAChH,4DAAM;IACV,4DAAM;IAEN,+DAAiK;IAAjK,6EAAiK;IAA9B,mVAA4B;IAA/J,4DAAiK;IACrK,4DAAM;IAEN,yJAA8I;IAClJ,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,2EAAsC;IAClC,8EAAmH;IAA3B,kVAA0B;IAC9G,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IACb,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAAoD;IAApD,2EAAoD;IAChD,2EAAiC;IAC7B,0EAAgD;IAC5C,wDACJ;IAAA,4DAAK;IAEL,2EAAmD;IAC/C,wDACJ;IAAA,4DAAM;IAEN,0EAAsC;IAClC,2JAUe;IACnB,4DAAK;IACT,4DAAM;IAEN,2EAAiC;IAC7B,yEAA2E;IACvE,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IApFsB,oFAAoB;IAGpC,0DACJ;IADI,kHACJ;IAGI,0DACJ;IADI,iHACJ;IAMgB,0DACJ;IADI,oHACJ;IAU4D,0DAAmD;IAAnD,4HAAmD;IAG7F,0DAA8D;IAA9D,+IAA8D;IAM5E,0DAAwC;IAAxC,+GAAwC;IAC5C,0DAEA;IAFA,iHAEA;IAaJ,0DACJ;IADI,2GACJ;IAGI,0DACJ;IADI,2GACJ;IAGkC,0DAAsB;IAAtB,0JAAsB;IAerD,0DAAgC;IAAhC,8IAAgC;IAC/B,0DAEA;IAFA,wGAEA;;;IAUhB,2EAAwH;;;IAAjF,6EAAoB;;;IAE3D,2EAA+E;;;IAArD,8EAAqB;;;IAE/C,2EAAiI;;;IAAxE,8EAAqB;;;IA3FlF,yEAAkE;IAC9D,kIAoFM;IAEN,4IAAwH;IAExH,4IAA+E;IAE/E,4IAAiI;IACrI,4DAAM;;;IA3FgD,0DAAiB;IAAjB,oFAAiB;IAsFvD,0DAAyB;IAAzB,mGAAyB;IAEzB,0DAAY;IAAZ,+EAAY;IAEZ,0DAA2C;IAA3C,4HAA2C;;AD1EpD,MAAM,8BAA+B,SAAQ,6DAAY;IAkB5D,YAAmB,OAAoB,EAAS,KAAsB,EAClD,EAAe,EAAS,IAAgB,EACxC,QAAkB;QAClC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,OAAE,GAAF,EAAE,CAAa;QAAS,SAAI,GAAJ,IAAI,CAAY;QACxC,aAAQ,GAAR,QAAQ,CAAU;QAftC,aAAQ,GAAY,KAAK,CAAC;QAE1B,cAAS,GAAY,KAAK,CAAC;QAC3B,YAAO,GAAY,KAAK,CAAC;QAEjB,qBAAgB,GAAY,KAAK,CAAC;QAE1C,kBAAa,GAAY,KAAK,CAAC;QAC/B,gBAAW,GAAY,IAAI,CAAC;QAEpB,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAQrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,eAAe;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YACxC,IAAI;gBACA,IAAI,EAAE,GAAqB,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC/D,IAAI,EAAE,EAAE;oBACJ,EAAE,CAAC,KAAK,EAAE,CAAC;iBACd;aACJ;YAAC,MAAM;aACP;SACJ;IACL,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAqB,8EAAkB,CAAC,CAAC;SAC1E;IACL,CAAC;IAED,UAAU;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,+DAAmB,EAAE,8DAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SAC1E,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,YAAY;aACnB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,IAAI,CAAC,OAAO;gBAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC;IACV,CAAC;IAED,cAAc;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,gDAAgD,CAAC;aACvF,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC;IACV,CAAC;IAED,WAAW,CAAC,MAAc;QACtB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YACtB,OAAO;SACV;QACD,MAAM,OAAO,GAAiC;YAC1C,QAAQ,EAAE,aAAa,CAAC,KAAK;SAChC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,8DAAW,CAAC,EAAC,gBAAgB,EAAE,MAAM,EAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,gCAAgC,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;aAChF,IAAI,CACD,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,yDAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CACnD;aACA,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,IAAI,CAAC,OAAO;oBAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC;gBACnD,CAAC,EAAE,IAAI,CAAC;aACX;iBAAM;gBACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aAC3B;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,aAAa,CAAC,GAAW;QAC7B,QAAQ,GAAG,EAAE;YACT,KAAK,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,MAAM;YACV,KAAK,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,OAAO;oBAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBAC5D,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACvB,CAAC,EAAE,IAAI,CAAC;gBACR,MAAM;YACV,KAAK,CAAC;gBACF,IAAI,IAAI,CAAC,OAAO;oBAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACvB,CAAC,EAAE,IAAI,CAAC;gBACR,MAAM;SACb;IAEL,CAAC;IAGD,gBAAgB,CAAC,GAAkB;QAC/B,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;IAGD,WAAW,CAAC,GAAe;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YACxC,IAAI,OAAO,GAA6B,GAAG,CAAC,MAAM,CAAC;YACnD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAAE;gBAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ;IACL,CAAC;IAEO,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC;IACnD,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;;4GAhKQ,8BAA8B;4HAA9B,8BAA8B;8KAA9B,4BAAwB,4KAAxB,uBAAmB;;QCjBhC,0HA4FM;;QA5FmB,uGAAuC;;;;;;;;;;;;;;;;;;;;;;;;ACAnB;AACmB;AACnB;AAEoB;AACf;AACiC;;AAoB5E,MAAM,2BAA2B;;sGAA3B,2BAA2B;wHAA3B,2BAA2B;4HAhB3B;YACL,yDAAY;YACZ,uDAAW;YACX,+DAAmB;YACnB,yDAAY;YACZ,2EAAgB;YAChB,4DAAW;SACd;mIASQ,2BAA2B,mBAPhC,8FAA8B,aAR9B,yDAAY;QACZ,uDAAW;QACX,+DAAmB;QACnB,yDAAY;QACZ,2EAAgB;QAChB,4DAAW,aAMX,8FAA8B;;;;;;;;;;;;;;;;;;ACrBG;AAElC,MAAM,qBAAqB;IAC9B,YACY,eAAyB,EACzB,iBAAoC;QADpC,oBAAe,GAAf,eAAe,CAAU;QACzB,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC7C,CAAC;IAQJ,GAAG,CAAC,KAAU,EAAE,aAAmB,EAAE,KAAW;QAC5C,IAAG,KAAK,EAAC,GAAE,qEAAoE;QAE/E,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAM,KAAK,EAAE,aAAa,CAAC,CAAC;QAEnE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QAExB,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAEM,MAAM,gBAAgB;IAEzB;QAMiB,iBAAY,GAAG,IAAI,yCAAO,EAAO,CAAC;QACnD,gBAAW,GAAoB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;IAPjD,CAAC;IAEhB,KAAK,CAAC,MAAY;QACd,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;CAIJ;;;;;;;;;;;;;;;;ACrCM,MAAM,mBAAmB;IAAhC;QAGI,gBAAW,GAAY,IAAI,CAAC,CAAC,mFAAmF;IAYpH,CAAC;IATU,MAAM,KAAK,KAAK;QACnB,MAAM,GAAG,GAAwB;YAC7B,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;SACd,CAAC;QACF,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;;;;;;;;;;;;;;;;;;ACVM,MAAM,+BAA+B;IACxC,YAAmB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAErD,CAAC;;8GAHQ,+BAA+B;6HAA/B,+BAA+B;;;;;;;;;;;;;;;;;;;;;ACMf;AACwD;;;;;;;ICR7E,yEAA6E;IAA5C,yTAAuB;IACpD,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAA8G;IAClH,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAEN,yEAAgE;IAC5D,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,wFACJ;;ADUD,MAAM,sBAAsB;IAe/B,YAAoB,wBAAkD,EAAU,EAAqB,EAAU,SAA2B;QAAtH,6BAAwB,GAAxB,wBAAwB,CAA0B;QAAU,OAAE,GAAF,EAAE,CAAmB;QAAU,cAAS,GAAT,SAAS,CAAkB;QATzH,aAAQ,GAAG,IAAI,yCAAO,EAAO,CAAC;QACxC,YAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IAU9C,CAAC;IAED,QAAQ;IACR,CAAC;IAED,eAAe;QACX,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW;QACP,6BAA6B;QAC7B,iCAAiC;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC/B;IACL,CAAC;IAED,kBAAkB,CAAC,aAAwB;QACvC,IAAI,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAE5F,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAC5D,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAEzB,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IAGD,gBAAgB,CAAC,GAAe;QAC5B,GAAG,CAAC,eAAe,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,GAAe;QAC3B,GAAG,CAAC,eAAe,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;;4FAxDQ,sBAAsB;oHAAtB,sBAAsB;kEAGpB,gGAA+B;;;;;QC3B9C,sEAA2F;QACvF,yEAA2D;QAAxB,2IAAS,iBAAa,IAAC;QAAC,4DAAM;QAEjE,yEAAgC;QAC5B,kHAMM;QAEN,kHAEM;QAEN,sEAAoD;QACxD,4DAAM;QACV,4DAAM;;QAlBD,iJAAqF;QAIxB,0DAAiB;QAAjB,iFAAiB;QAQxB,0DAAW;QAAX,2EAAW;;;;;;;;;;;;;;;;;;;;;;ACZqB;AAC9C;AACqB;AACmB;AACvB;;AAgBvD,MAAM,mBAAmB;;sFAAnB,mBAAmB;gHAAnB,mBAAmB;qHATjB;QACP;YACI,OAAO,EAAE,yEAAoB;YAC7B,QAAQ,EAAE,yEAAoB;YAC9B,IAAI,EAAE,CAAC,mEAAwB,EAAE,yDAAc,EAAE,mDAAQ,CAAC;SAC7D;KACJ,YAVQ;YACL,yDAAY;SACf;mIAWQ,mBAAmB,mBAVb,6EAAsB,EAAE,gGAA+B,aAFlE,yDAAY;;;;;;;;;;;;;;;;;;;;ACA8C;AACD;AACL;;AAGrD,MAAM,oBAAoB;IAG7B,YACY,wBAAkD,EAClD,MAAsB,EACtB,QAAkB;QAFlB,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,WAAM,GAAN,MAAM,CAAgB;QACtB,aAAQ,GAAR,QAAQ,CAAU;IAE9B,CAAC;IAEO,2BAA2B,CAAC,MAA2B;QAC3D,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,uEAAmB,EAAE,MAAM,CAAC,CAAC;QAErC,MAAM,SAAS,GAAG,IAAI,qDAAgB,EAAE,CAAC;QACzC,GAAG,CAAC,GAAG,CAAC,qDAAgB,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE;YAC7C,mBAAmB;YACnB,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,6EAAsB,CAAC,CAAC;QACvG,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,0DAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAE5F,IAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,EAAC;YACjC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;SACpE;QACD,IAAG,MAAM,IAAI,MAAM,CAAC,KAAK,EAAC;YACtB,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3C,YAAY,CAAC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;SAC1D;QAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;QAC5F,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;QAEvC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE;YACpD,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,6BAA6B;QACjC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAEM,IAAI,CAAC,aAAwB,EAAE,MAA2B;QAC7D,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,GAAG,6EAAyB,CAAC;SACtC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,kBAAkB,GAAG,aAAa,CAAC;QAEpE,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,6BAA6B,EAAE,CAAC;IACzC,CAAC;;wFAjEQ,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB;;;;;;;;;;;;;;;;;ACbY;AAGtC,MAAM,iBAAiB,GAAG,IAAI,yDAAc,CAAqB,mBAAmB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;ACChD;AACE;;AAQxC,MAAM,sBAAsB;;4FAAtB,sBAAsB;mHAAtB,sBAAsB;uHALtB,CAAC,yDAAY,CAAC;mIAKd,sBAAsB,mBAJhB,0DAAa,aADlB,yDAAY,aAEZ,0DAAa;;;;;;;;;;;;;;;;;ACV3B;;;GAGG;AACmE;;;AAO/D,MAAM,aAAa;IAItB;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,uDAAY,EAAE;IACvC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACzB,CAAC;;0EAVQ,aAAa;2GAAb,aAAa;QAHX,sHAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACR8C;AAClC;AAGzB;AAEY;;;;;;;;;;;ICFzB,mEAAuE;;;;;IAD3E,uEAAiH;IAAtC,uSAAS,4BAAqB,KAAK,CAAC,IAAC;IAC5G,iJAAuE;IAC3E,4DAAI;;;;IAFoB,0JAAyB;IAC9B,0DAAuC;IAAvC,iFAAuC;;;IAItD,mEAAuE;;;IAD3E,wEAAgI;IAC5H,iJAAuE;IAC3E,4DAAI;;;;IAFmB,wJAAsB;IAAyC,kHAAyC;IAC5G,0DAAuC;IAAvC,iFAAuC;;;IAItD,8EAA0D;IACtD,wEAA0H;;IAE1H,qEAA6J;IACjK,4DAAU;;;;IAHE,0DAA8F;IAA9F,uRAA8F;IAEd,0DAAyB;IAAzB,8FAAyB;IAA5G,mNAAkF;;;IAH3F,kJAIU;IAEV,0EAAiC;IAC7B,0EAA2C;IACvC,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAhB8B,mFAAoB;IAQhD,0DAEA;IAFA,2FAEA;;;IApBhB,yEAAyD;IACrD,uHAEI;IAEJ,uHAEI;IAEJ,uNAkBc;IAClB,4DAAM;;;IA3BE,0DAAkB;IAAlB,iFAAkB;IAIlB,0DAAiB;IAAjB,gFAAiB;;;IAPjC,yEAAkD;IAC9C,yEAA4B;IACxB,qHA4BM;IACV,4DAAM;IACV,4DAAM;;;IA9BiD,0DAAQ;IAAR,iFAAQ;;ADcxD,MAAM,mBAAoB,SAAQ,6DAAY;IASjD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,IAAgB;QAChC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,SAAI,GAAJ,IAAI,CAAY;QAR3B,aAAQ,GAAW,CAAC,CAAC;QACpB,mBAAc,GAAuB,IAAI,uDAAY,EAAQ,CAAC;QAIhE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAKzD,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,uBAAuB,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC9D,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,IAAI,CAAC,KAAK,EAAE;aACf;iBAAM;gBACH,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;aAC9B;QACL,CAAC,CAAC,CAAC;IACX,CAAC;;sFAjCQ,mBAAmB;iHAAnB,mBAAmB;QChBhC,+GAgCM;;QAhCmB,mHAAuB;;;;;;;;;;;;;;;;;;;;;;;ACCH;AACc;AACG;AACjB;AACiC;;AAcvE,MAAM,gBAAgB;;gFAAhB,gBAAgB;6GAAhB,gBAAgB;iHAVhB;YACL,yDAAY;YACZ,wEAAiB;YACjB,qFAAoB;YACpB,yDAAY;SACf;mIAKQ,gBAAgB,mBAJV,sEAAmB,aAL9B,yDAAY;QACZ,wEAAiB;QACjB,qFAAoB;QACpB,yDAAY,aAGN,sEAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBkE;AAGe;AACzE;AACZ;;;;;;;;;;;;ICL7B,yEAAgI;IAC5H,yEAAuB;IACnB,wEAAsE;IAClE,uDACJ;IAAA,4DAAK;IAGL,6FAAsH;IAA7C,kXAA2C;IAAE,4DAA0B;IAEhJ,yEAAoC;IAChC,yEAAwB;IACpB,uEAA0E;IACtE,uDAEA;IAAA,yEAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAvBqB,+IAAuE;IAGtF,0DACJ;IADI,+GACJ;IAGyB,0DAAqB;IAArB,qFAAqB;IAInC,0DAA+B;IAA/B,6IAA+B;IAC9B,0DAEA;IAFA,8GAEA;;ADIb,MAAM,uBAAwB,SAAQ,6DAAY;IAoBrD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,IAAgB,EAAU,MAAyB;QACnE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAmB;QAf9D,aAAQ,GAAW,CAAC,CAAC;QACrB,kBAAa,GAAW,CAAC,CAAC;QAC1B,cAAS,GAAW,SAAS,CAAC;QAE7B,iBAAY,GAA0B,IAAI,uDAAY,EAAW,CAAC;QAQpE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAMzD,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,QAAuB;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,WAAW;IACX,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,2BAA2B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;aACxG,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,CAAC,EAAE,GAAG,EAAE;YACJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEP,IAAG,IAAI,CAAC,aAAa,GAAC,CAAC,EAAE;YACrB;;;;qBAIS;SACZ;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC;YAAE,OAAO;QAEhF,MAAM,GAAG,GAAuB;YAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB;YACjD,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;YACpD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsC,oCAAoC,EAAE,GAAG,CAAC;aACzF,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,GAAG,EAAE;gBACL,IAAI,GAAG,CAAC,IAAI,EAAE;oBACV,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACjB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC;oBAChE,CAAC,CAAC;iBACL;gBACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;aAC5B;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,eAAe,CAAC,KAAa;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACjC,CAAC;;8FA5FQ,uBAAuB;qHAAvB,uBAAuB;QClBpC,oHAuBM;;QAvB8F,yHAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCjF;AACA;AACmB;AACI;AACN;AACuB;AACP;AACT;AACD;AACF;;AAwB3D,MAAM,iBAAiB;;kFAAjB,iBAAiB;8GAAjB,iBAAiB;kHApBjB;YACL,8EAAiB;YACjB,wEAAiB;YACjB,yDAAY;YACZ,uDAAW;YACX,+FAAsB;YACtB,qFAAoB;YACpB,+DAAmB;YACnB,0DAAY;YACZ,+EAAoB;YACpB,4EAAiB;SACpB;mIASQ,iBAAiB,mBAJtB,+EAAuB,aAfvB,8EAAiB;QACjB,wEAAiB;QACjB,yDAAY;QACZ,uDAAW;QACX,+FAAsB;QACtB,qFAAoB;QACpB,+DAAmB;QACnB,0DAAY;QACZ,+EAAoB;QACpB,4EAAiB,aAGjB,+EAAuB;;;;;;;;;;;;;;;;;;;;;;;;;AC1B4C;AAI9C;AACY;;;;;;;;ICLrC,uEAG+B;IAAA,uDAAqB;IAAA,4DAAI;;;;IAFrD,uGAAoC;IAER,0DAAqB;IAArB,qFAAqB;;;IAJxD,wEAA4E;IACxE,qIAGwD;IAC5D,qEAAe;;;IAJgB,0DAAwB;IAAxB,iGAAwB;;ADehD,MAAM,8BAA+B,SAAQ,6DAAY;IAK5D,YAAmB,OAAoB,EAAS,KAAsB,EAClD,cAAkC;QAClD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,mBAAc,GAAd,cAAc,CAAoB;QAJtD,0BAAqB,GAA+B,IAAI,CAAC;QACzD,kBAAa,GAAiB,IAAI,yCAAO,EAAE,CAAC;QAMxC,IAAI,CAAC,cAAc,CAAC,sBAAsB;aACrC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,GAAG,EAAE;gBACN,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACrC;YAED,IAAI,CAAC,qBAAqB,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACzC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,8EAA8E;YACzH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC,CAAC;IACV,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;SACjC;IACL,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;YACnE,OAAO;SACV;QACD,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QAExD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACtC,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBACjC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACrD;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,WAAgC;QACrC,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9D,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACxB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACpC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,cAAc,CAAC,WAAgC;QAC3C,MAAM,GAAG,GAAW,EAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,EAAE;YACL,OAAO,GAAG,CAAC;SACd;QAGD,MAAM,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACZ,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAClB,SAAS;iBACZ;gBAED,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACzB,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzB;qBAAM;oBACH,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;iBAClC;aACJ;SACJ;QAGD,OAAO,GAAG,CAAC;IACf,CAAC;;4GAvFQ,8BAA8B;4HAA9B,8BAA8B;QChB3C,4IAKe;;QALA,+HAA2D;;;;;;;;;;;;;;;;;;;;;ACC7B;AACsC;AACtC;;AAWtC,MAAM,2BAA2B;;sGAA3B,2BAA2B;wHAA3B,2BAA2B;4HAR3B;YACL,yDAAY;YACZ,yDAAY;SACf;mIAKQ,2BAA2B,mBAJrB,8FAA8B,aAHzC,yDAAY;QACZ,yDAAY,aAGN,8FAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACV+B;AAGT;AAGrC;AACkB;AACwB;;;;;;;;;;;;ICCvD,6EAAmJ;;;IAAtI,kGAAkC;;;IAY/C,6EAAsJ;;;IAApD,qGAAqC;;;IACvI,6EAA4F;;;IAAjD,kGAAkC;;;IAC7E,6EAAmF;;;IAAzC,0FAA0B;;;IACpE,6EAAmF;;;IAAhD,iGAAiC;;;;ADT7E,MAAM,oBAAqB,SAAQ,6DAAY;IAYlD,YAAY,OAAoB,EAAE,KAAsB,EAAU,SAAwB,EACtE,EAAe,EAAU,SAA2B,EACpD,QAAkB,EAAU,IAAgB;QAC5D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHwC,cAAS,GAAT,SAAS,CAAe;QACtE,OAAE,GAAF,EAAE,CAAa;QAAU,cAAS,GAAT,SAAS,CAAkB;QACpD,aAAQ,GAAR,QAAQ,CAAU;QAAU,SAAI,GAAJ,IAAI,CAAY;QAVhE,cAAS,GAAY,KAAK,CAAC;QAC3B,YAAO,GAAY,KAAK,CAAC;QACzB,kBAAa,GAAY,KAAK,CAAC;QACvB,qBAAgB,GAAY,KAAK,CAAC;QAGlC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAOrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAEhE,IAAI,CAAC,SAAS,CAAC,WAAW;aACrB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAwB,EAAE,EAAE;YACpC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,eAAe,EAAE;gBACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC7B;iBAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;gBAC3G,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IACD,gBAAgB;QACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAqB,8EAAkB,CAAC,CAAC;SAC1E;IACL,CAAC;IAED,cAAc;QACV,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,0CAA0C,CAAC;aACzE,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;YAClC,IAAI,GAAG,CAAC,OAAO,EAAE;gBACb,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC1B;QACL,CAAC,CAAC;IACV,CAAC;IAED,KAAK,CAAC,MAAc;QAChB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3G,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,gEAAmB,EAAE,iEAAoB,CAAC,CAAC,CAAC,EAAE,+DAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACpG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,gEAAmB,EAAE,iEAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;SACjE,CAAC;IACN,CAAC;IAED,KAAK,CAAC,GAAkB;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;SACJ;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAC,CAAC;aACtG,IAAI,CAAC,qDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,GAAG,EAAE;QAChB,CAAC,CAAC,CAAC;IACX,CAAC;;wFAhGQ,oBAAoB;kHAApB,oBAAoB;QChBjC,yEAAyE;QAAxB,+IAAS,iBAAa,IAAC;QACpE,yEAAiC;QAC7B,yEAA+B;QAC3B,2EAAsC;QAClC,uDACJ;QAAA,4DAAQ;QAER,yEAAiC;QAC7B,2EAA2G;QAA/B,2IAAS,sBAAkB,IAAC;QAAxG,4DAA2G;QAE3G,gIAAmJ;QACvJ,4DAAM;QACV,4DAAM;QAEN,yEAA+B;QAC3B,2EAAyC;QACrC,wDACJ;QAAA,4DAAQ;QAER,0EAAiC;QAC7B,4EAAkH;QAA/B,4IAAS,sBAAkB,IAAC;QAA/G,4DAAkH;QAElH,kIAAsJ;QACtJ,kIAA4F;QAC5F,kIAAmF;QACnF,kIAAmF;QACvF,4DAAM;QACV,4DAAM;QAEN,0EAAuD;QACnD,yEAA6F;QAAnD,wIAAS,iBAAa,IAAC;QAC7D,wDACJ;QAAA,4DAAI;QACR,4DAAM;QACV,4DAAM;QAEN,2EAAkC;QAC9B,8EAA2I;QAAnI,6IAAS,oBAAgB,IAAC;QAC9B,wDACJ;QAAA,4DAAS;QAET,yEAAuF;QAAnD,wIAAS,iBAAa,IAAC;QACvD,wDACJ;QAAA,4DAAI;QACR,4DAAM;QACV,4DAAM;;QA7CD,mFAAsB;QAIX,0DACJ;QADI,mGACJ;QAKqD,0DAAkF;QAAlF,sJAAkF;QAMnI,0DACJ;QADI,sGACJ;QAKkB,0DAAkF;QAAlF,sJAAkF;QAClF,0DAA2B;QAA3B,+FAA2B;QAC3B,0DAA0B;QAA1B,8FAA0B;QAC1B,0DAAmB;QAAnB,mFAAmB;QAKlC,0DAAsC;QAAtC,8IAAsC;QACrC,0DACJ;QADI,4GACJ;QAK4D,0DAAkC;QAAlC,0FAAkC;QAA/D,yFAA4B;QAC3D,0DACJ;QADI,gGACJ;QAEG,0DAAgC;QAAhC,8IAAgC;QAC/B,0DACJ;QADI,qGACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CuH;AAIlG;AACqC;AACzB;AACkC;AAGJ;;;;;;;;;;;ICY3C,6EAA0H;;;IAAjD,kGAAkC;;;IAC3G,6EAAoF;;;IAAzC,0FAA0B;;;IAoBrE,6EAA6H;;;IAApD,qGAAqC;;;IAC9G,6EAAmF;;;IAAhD,iGAAiC;;;IAEpE,6EAAqF;;;IAAzC,0FAA0B;;;IA+BlF,qEAA6G;;;IAAzC,8JAAkC;;;IAgB9F,yEAA0D;IACtD,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IAEN,uDACJ;IAAA,4DAAK;;;;IADD,0DACJ;IADI,mHACJ;;;IATJ,wEAAmE;IAC/D,yIAQK;IACT,qEAAe;;;;IATN,0DAAiC;IAAjC,wGAAiC;;;;;IA3F1D,yEAAkD;IAC9C,yEAA0E;IACtE,yEAA6B;IACzB,yEAAiC;IAC7B,yEAAmC;IAC/B,2EAAsC;IAClC,uDACJ;IAAA,4DAAQ;IAER,yEAA+C;IAC3C,0EAA6B;IACzB,0EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAA4G;IAChH,4DAAM;IACV,4DAAM;IAEN,+DAA2K;IAA3K,6EAA2K;IAApD,gUAAsB;IAA7I,4DAA2K;IAC/K,4DAAM;IAEN,6IAA0H;IAC1H,6IAAoF;IACxF,4DAAM;IACV,4DAAM;IAEN,0EAAmC;IAC/B,6EAAyC;IACrC,wDACJ;IAAA,4DAAQ;IAER,0EAA+C;IAC3C,2EAA6B;IACzB,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAA+G;IACnH,4DAAM;IACV,4DAAM;IAEN,+DAA+J;IAA/J,6EAA+J;IAA7B,uUAA4B;IAA9J,4DAA+J;IACnK,4DAAM;IAEN,6IAA6H;IAC7H,6IAAmF;IAEnF,6IAAqF;IACzF,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,2EAAsC;IAClC,8EAA0E;IAAlE,sUAA0B;IAC9B,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IAET,+DAA+E;IAA/E,yEAA+E;IAApB,0TAAmB;IAC1E,wDACJ;IAAA,4DAAI;IAEJ,2EAA+C;IAC3C,wDAEA;IAAA,yEAAkC;IAC9B,wDACJ;IAAA,4DAAI;IAEJ,wDACJ;IAAA,4DAAM;IACV,4DAAM;IAEN,6HAA6G;IACjH,4DAAM;IACV,4DAAM;IAEN,2EAAoD;IAChD,2EAAiC;IAC7B,0EAAgD;IAC5C,wDACJ;IAAA,4DAAK;IAEL,2EAAmD;IAC/C,wDACJ;IAAA,4DAAM;IAEN,0EAAsC;IAClC,+IAUe;IACnB,4DAAK;IACT,4DAAM;IAEN,2EAAiC;IAC7B,yEAA+D;IAC3D,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAnHiD,0DAAsB;IAAtB,sFAAsB;IAKrD,0DACJ;IADI,oGACJ;IAUoF,0DAAiC;IAAjC,iGAAiC;IAGnG,0DAAyD;IAAzD,mIAAyD;IACzD,0DAA2B;IAA3B,qGAA2B;IAMzC,0DACJ;IADI,wGACJ;IAU2E,0DAAqC;IAArC,qGAAqC;IAG9F,0DAAyD;IAAzD,mIAAyD;IACzD,0DAAmB;IAAnB,sFAAmB;IAEnB,0DAA4B;IAA5B,sGAA4B;IAO9C,0DAEA;IAFA,mGAEA;IAQA,0DACJ;IADI,+GACJ;IAGI,0DAEA;IAFA,yGAEA;IAAG,0DAA8B;IAA9B,2JAA8B;IAC7B,0DACJ;IADI,0GACJ;IAEA,0DACJ;IADI,0GACJ;IAGiC,0DAA6B;IAA7B,uGAA6B;IAO9D,0DACJ;IADI,2GACJ;IAGI,0DACJ;IADI,2GACJ;IAGkC,0DAAsB;IAAtB,0JAAsB;IAgBpD,0DAEA;IAFA,wGAEA;;;;IA7GpB,yEAA8E;IAAtD,8TAAuB;IAC3C,sHAoHM;IACV,4DAAM;;;IArH2B,0DAAmB;IAAnB,sFAAmB;;ADoB7C,MAAM,kBAAmB,SAAQ,6DAAY;IAsBhD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,SAAwB,EAAU,QAAkB,EACpD,EAAe,EAAU,SAAuB;QAChE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QACnB,cAAS,GAAT,SAAS,CAAe;QAAU,aAAQ,GAAR,QAAQ,CAAU;QACpD,OAAE,GAAF,EAAE,CAAa;QAAU,cAAS,GAAT,SAAS,CAAc;QArB1D,aAAQ,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAKhE,YAAO,GAAY,KAAK,CAAC;QACzB,eAAU,GAAY,KAAK,CAAC;QAC5B,kBAAa,GAAY,KAAK,CAAC;QAE/B,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;QAEpB,qBAAgB,GAAY,KAAK,CAAC;QAK1C,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAO7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAChE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;QAE3G,IAAI,CAAC,SAAS,CAAC,WAAW;aACrB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAwB,EAAE,EAAE;YACpC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;gBACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;gBAEjC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,eAAe,EAAE;oBAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,8DAA8D;oBAC9D,+BAA+B;iBAClC;qBAAM,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;oBACpG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBAC3B;aACJ;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAqB,8EAAkB,CAAC,CAAC;SAC1E;IACL,CAAC;IAED,kCAAkC;IAElC,WAAW,CAAC,GAAe;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC5B,IAAI,OAAO,GAA6B,GAAG,CAAC,MAAM,CAAC;YACnD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,kBAAkB,CAAC,EAAE;gBACzE,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ;IACL,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,+DAAmB,EAAE,gEAAoB,CAAC,CAAC,CAAC,EAAE,8DAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACpG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,+DAAmB,EAAE,gEAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;SACjE,CAAC;IACN,CAAC;IAED,KAAK,CAAC,GAAkB;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;SACJ;IACL,CAAC;IAED,WAAW;QACP,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,cAAc;QACV,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,wCAAwC,CAAC;aACvE,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;YAClC,IAAI,GAAG,CAAC,OAAO,EAAE;gBACb,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aACjC;QACL,CAAC,CAAC;IACV,CAAC;IAED,YAAY,CAAC,MAAc;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO;QAElC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACnH,CAAC;IAGD,gBAAgB,CAAC,GAAkB;QAC/B,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAClD,CAAC;IAED;;OAEG;IAEH,KAAK;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAAA,CAAC;IAEF,eAAe;QACX,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC5B,IAAI;gBACA,IAAI,EAAE,GAAqB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC5D,IAAI,EAAE,EAAE;oBACJ,EAAE,CAAC,KAAK,EAAE,CAAC;iBACd;aACJ;YAAC,MAAM;aACP;SACJ;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAEO,KAAK;QACT,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACN,IAAI,GAAG,GAAW,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YAClD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC9G;aAAM;YACH,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACxD;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;;oFA5KQ,kBAAkB;gHAAlB,kBAAkB;oJAAlB,uBAAmB,8KAAnB,4BAAwB;;QCrBrC,8GAsHM;;QAtH2C,2FAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACUpB;AACG;AAC9B;AACoB;AAC2B;AACS;AAEvB;;;;;;;;;;;;;;;ICHtD,gEAAqH;IAArH,qFAAqH;IAA3C,6WAAmC,KAAK,KAAE;IAAC,6DAAiB;;IAAxF,qFAA2B;;;;IAEzE,gEAAuE;IAAvE,0FAAqG;;;;IAfzG,yEAAgD;IAC5C,0EAA4F;IAAvF,6UAAiC;IAClC,wDACJ;IAAA,6DAAM;IAEN,0EAAqF;IAAhF,6UAAiC;IAClC,0EAA6B;IACzB,+DAAK;IAAL,uEAAK;IACD,qEAA4G;IAChH,6DAAM;IACV,6DAAM;IACV,6DAAM;IAEN,gJAAsI;IAEtI,0KAAqG;IACzG,sEAAe;;;IAdP,2DACJ;IADI,oGACJ;IAUiB,2DAA2B;IAA3B,+FAA2B;IAEd,2DAAuC;IAAvC,2GAAuC;;;;;IAerE,gEAA6F;IAA7F,4FAA6F;IAA5C,sYAA2C;IAAC,6DAAuB;;;;IAXpH,yEAAuF;IAAvC,kVAAsC;IAClF,wDACJ;IAAA,6DAAI;IACJ,0EAA0F;IAArF,oVAAsC;IACvC,0EAA6B;IACzB,+DAAK;IAAL,uEAAK;IACD,qEAA4G;IAChH,6DAAM;IACV,6DAAM;IACV,6DAAM;IAEN,4JAAoH;;;IAVhH,2DACJ;IADI,+FACJ;IASuB,2DAAwB;IAAxB,4FAAwB;;;ADFhD,MAAM,cAAe,SAAQ,6DAAY;IAS5C,YAAY,OAAoB,EAAE,KAAsB,EACrC,SAAwB,EAAU,MAAc,EAC/C,gBAAsC,EACtC,IAAwB;QACxC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,cAAS,GAAT,SAAS,CAAe;QAAU,WAAM,GAAN,MAAM,CAAQ;QAC/C,qBAAgB,GAAhB,gBAAgB,CAAsB;QACtC,SAAI,GAAJ,IAAI,CAAoB;QAT5C,aAAQ,GAAY,KAAK,CAAC;QAG1B,uBAAkB,GAAY,KAAK,CAAC;QACpC,kBAAa,GAAiB,IAAI,0CAAO,EAAO,CAAC;QAQ7C,IAAI,CAAC,SAAS,CAAC,YAAY;aACtB,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEP;;;;WAIG;QAEH,IAAI,CAAC,IAAI,CAAC,OAAO;aACZ,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3D,CAAC,CAAC;QAEN,IAAI,CAAC,SAAS,CAAC,WAAW;aACrB,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAwB,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;;gBACjE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACH,MAAM;QACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,MAAM,CAAC,MAAM;aACb,IAAI,CACD,uDAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,6DAAe,CAAC,EACzC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC;aACA,SAAS,CAAC,CAAC,GAAoB,EAAE,EAAE;YAChC,IAAI,CAAC,sEAAc,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YAErC,IAAI,EAAE,GAAa,4FAA0B,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACtC,IAAI,CAAC,iGAA+B,EAAE,EAAE;oBACpC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;iBAC3B;aACJ;QACL,CAAC,CAAC;IACV,CAAC;IAED,eAAe,CAAC,GAAe,EAAE,GAAa;QAC1C,IAAI,GAAG,IAAI,SAAS,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG;SACnC;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;SAC5D;IACL,CAAC;IAED,oBAAoB,CAAC,GAAe,EAAE,GAAa;QAC/C,IAAG,IAAI,CAAC,kBAAkB,EAAC;YACnB,MAAM,SAAS,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC3C,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,OAAO;SACd;QAED,IAAI,GAAG,IAAI,SAAS,EAAE;YAClB,IAAI,CAAC,kBAAkB,GAAG,GAAG;SAChC;aAAM;YACH,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;SACtD;IACL,CAAC;IAED,qBAAqB,CAAC,IAAa;QAC/B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,YAAY;IACZ,UAAU;QACN,MAAM,MAAM,GAAwB;YAChC,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,OAAO;YACzB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC;SAC1C,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,yEAAoB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;4EA/GQ,cAAc;6GAAd,cAAc;QC7B3B,0EAA6G;QACzG,6HAgBe;QAEf,wMAac;QAClB,6DAAM;;;QAjCY,gNAA0F;QACzF,2DAAiB;QAAjB,gFAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIS;AACI;AACJ;AACmB;AACC;AACH;AACc;AACd;AACJ;AACuC;AACX;;AA6B/E,MAAM,WAAW;;sEAAX,WAAW;wGAAX,WAAW;4GAzBX;YACL,yDAAY;YACZ,wDAAW;YACX,gEAAmB;YACnB,0DAAY;YACZ,2EAAgB;YAChB,sFAAmB;YACnB,wEAAe;YACf,2GAA2B;SAC9B;mIAgBQ,WAAW,mBAbhB,4DAAc;QACd,yEAAoB;QACpB,qEAAkB;QAClB,iGAAuB,aAdvB,yDAAY;QACZ,wDAAW;QACX,gEAAmB;QACnB,0DAAY;QACZ,2EAAgB;QAChB,sFAAmB;QACnB,wEAAe;QACf,2GAA2B,aAU3B,4DAAc;QACd,yEAAoB;QACpB,qEAAkB;QAClB,iGAAuB;;;;;;;;;;;;;;;;;;;;;;;;;ACzCgE;AACtC;AAM4C;;;;;;;;;IC2B7E,yEAAyD;IACrD,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IAEN,uDACJ;IAAA,4DAAK;;;;IADD,0DACJ;IADI,gHACJ;;;IATJ,wEAAmE;IAC/D,kIAQK;IACT,qEAAe;;;;IATY,0DAAgC;IAAhC,sGAAgC;;;;ADfxE,MAAM,uBAAwB,SAAQ,6DAAY;IAIrD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,SAAwB,EAAU,gBAAsC;QAExF,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QACnB,cAAS,GAAT,SAAS,CAAe;QAAU,qBAAgB,GAAhB,gBAAgB,CAAsB;QAHlF,cAAS,GAA0B,IAAI,uDAAY,EAAW;IAMxE,CAAC;IAID,gBAAgB,CAAC,GAAkB;QAC/B,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;IAGD,UAAU,CAAC,EAAO;QACd,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;IAED,iBAAiB;QACb,MAAM,MAAM,GAAwB;YAChC,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,OAAO;YACzB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;SAC5C,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,4GAA6B,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAoB;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;;8FA7CQ,uBAAuB;qHAAvB,uBAAuB;uKAAvB,4BAAwB,iKAAxB,sBAAkB;;QClB/B,yEAAwB;QACpB,yEAA4B;QACxB,yEAAmD;QAC/C,yEAA6B;QACzB,yEAAmC;QAC/B,uEAA2F;QAAlB,0IAAS,WAAO,IAAC;QACtF,uDACJ;QAAA,4DAAI;QAEJ,uEAA4F;QAA9B,0IAAS,uBAAmB,IAAC;QACvF,uDACJ;QAAA,4DAAI;QACR,4DAAM;QAEN,yEAAsC;QAClC,6EAAkE;QAA1D,gJAAS,YAAQ,IAAC;QACtB,wDAEA;QAAA,0EAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,qEAAqH;QACzH,4DAAM;QACV,4DAAM;QACV,4DAAS;QACb,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAAoD;QAApD,2EAAoD;QAChD,2EAAiC;QAE7B,0EAAsC;QAClC,wIAUe;QACnB,4DAAK;QACT,4DAAM;QAEV,4DAAM;QACV,4DAAM;QACV,4DAAM;;QA3CiB,0DAA0B;QAA1B,6IAA0B;QACzB,0DACJ;QADI,+GACJ;QAGI,0DACJ;QADI,iHACJ;QAKI,0DAEA;QAFA,8GAEA;QAc0B,0DAAsB;QAAtB,yJAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BxE;AAIA;AAEA;;;;;;;;;AAUM,MAAOI,qBAAP,SAAqCnC,6DAArC,CAAiD;AAYnD1B,cAAY6B,OAAZ,EAAkCC,KAAlC,EAAkE7B,IAAlE,EAA4F6D,MAA5F,EACoBC,SADpB,EAC4C;AACxC,UAAMlC,OAAN,EAAeC,KAAf;AAF8D;AAA0B;AACxE;AATpB,4BAA4B,KAA5B;AACA,0BAA0B,KAA1B;AAEA,sBAA2B,IAAI6B,yCAAJ,EAA3B;AACA,yBAA8B,IAAIA,yCAAJ,EAA9B;AAQI,SAAK1D,IAAL,CAAUG,GAAV,CAAc,qBAAd,EACK4D,IADL,CACUJ,yDAAS,CAAC,KAAKK,aAAN,CADnB,EAEKvD,SAFL,CAEgBC,GAAD,IAAa;AACpB,WAAKuD,SAAL,GAAiBvD,GAAG,CAACwD,SAArB;AACA,WAAKC,WAAL;AACH,KALL;AAMH;;AAEDC,iBAAe;AACXC,oBAAgB,CAAC,OAAD,EAAU,MAAK;AAC3B,WAAKC,cAAL,GAAsB,KAAtB;AACH,KAFe,CAAhB;AAGH;;AAEDC,oBAAkB;AACd,QAAIC,SAAS,GAAG,KAAKP,SAArB;AACAQ,gBAAY,CAAC;AACTC,YAAM,EAAE,MADC;AAETC,kBAAY,EAAE,IAFL;AAGTT,eAAS,EAAEM,SAHF;AAITI,WAAK,EAAE,CACH;AACIC,YAAI,EAAE,MADV;AAEIC,YAAI,EAAE,KAAKC,GAAL,CAAS,cAAT,CAFV;AAGIC,YAAI,EAAE;AAHV,OADG,EAMH;AACIH,YAAI,EAAE,UADV;AAEIC,YAAI,EAAE,KAAKC,GAAL,CAAS,iBAAT,CAFV;AAGIC,YAAI,EAAE;AAHV,OANG,CAJE;AAgBTC,sBAAgB,EAAGC,MAAD,IAAgB;AAC9B,YAAIC,aAAa,GAAGD,MAAM,CAACE,UAA3B;;AACA,YAAIF,MAAM,CAACL,IAAP,IAAe,MAAnB,EAA2B;AACvBM,uBAAa,CAACE,KAAd,IAAsB,MAAKF,aAAa,CAAC,UAAD,CAAxC;AAEH;;AACD,eAAOD,MAAP;AAEH,OAxBQ;AAyBTI,YAAM,EAAE,CAACC,CAAD,EAAgBC,IAAhB,EAA2BC,IAA3B,KAAwC;AAC5CF,SAAC,CAACG,cAAF;AACA,aAAK7B,MAAL,CAAY8B,aAAZ,CAA0BH,IAAI,CAACI,GAA/B,EAAoCC,IAApC,CAAyC,MAAK,CAAG,CAAjD;AACA,eAAO,IAAP;AACH;AA7BQ,KAAD,EA8BT,YA9BS,CAAZ;AA+BH;;AAEDC,aAAW;AACP,SAAK9B,aAAL,CAAmBpD,IAAnB;AACA,SAAKoD,aAAL,CAAmBnD,QAAnB;AACA,SAAKkF,UAAL,CAAgBlF,QAAhB;AACH;;AAEDmF,aAAW,CAACC,GAAD,EAAmB;AAC1B,QAAIA,GAAG,CAACC,GAAJ,KAAY,QAAhB,EAA0B;AACtB,WAAK5B,cAAL,GAAsB,KAAtB;AACH;AACJ;;AAED6B,QAAM,CAACC,MAAD,EAAe;AACjB,QAAIA,MAAM,CAACC,MAAP,IAAiB,CAArB,EAAwB;AACxB,SAAKD,MAAL,CAAYE,aAAZ,CAA0BC,KAA1B,GAAkC,EAAlC;AACA,SAAKjC,cAAL,GAAsB,KAAtB;AACA,SAAKT,MAAL,CAAY8B,aAAZ,CAA0B,oBAAoBS,MAAM,EAApD,EAAwDP,IAAxD,CAA6D,MAAK,CAAG,CAArE;AACH;;AAEDW,gBAAc,CAACP,GAAD,EAAqBG,MAArB,EAAmC;AAC7C,SAAKtC,SAAL,CAAe2C,sBAAf,CAAsCL,MAAtC;;AAEA,QAAIH,GAAG,CAACC,GAAJ,KAAY,OAAZ,IAAuBD,GAAG,CAACC,GAAJ,IAAW,aAAtC,EAAqD;AACjD,WAAKC,MAAL,CAAYC,MAAZ;AACA,WAAK9B,cAAL,GAAsB,KAAtB;AACA,WAAKyB,UAAL,CAAgBnF,IAAhB;AACA;AACH;AACJ;;AAED8F,YAAU,CAACN,MAAD,EAAe;AACrB,QAAIO,OAAO,GAAkB;AACzBP,YAAM,EAAEQ,SAAS,CAACR,MAAD,CADQ;AAEzBS,eAAS,EAAE,CAFc;AAGzBC,cAAQ,EAAE,CAHe;AAIzBC,iBAAW,EAAEtD,2EAA0BuD;AAJd,KAA7B;AAMA,WAAO,KAAKhH,IAAL,CAAUoB,IAAV,CAAe,YAAf,EAA6BuF,OAA7B,CAAP;AACH;;AAEMM,cAAY;AACf,QAAI,CAAC,KAAKC,gBAAV,EAA4B;AACxBC,OAAC,CAAC,iBAAD,CAAD,CAAqBC,IAArB;AACA,WAAKF,gBAAL,GAAwB,IAAxB;AACH,KAHD,MAIK;AACDC,OAAC,CAAC,iBAAD,CAAD,CAAqBE,IAArB;AACA,WAAKH,gBAAL,GAAwB,KAAxB;AACH;AACJ;;AAEO/C,aAAW;AACf,QAAImD,SAAS,GAAGtF,QAAQ,CAACM,aAAT,CAAuB,QAAvB,CAAhB;AACAgF,aAAS,CAACC,KAAV,GAAkB,IAAlB;AACAD,aAAS,CAAC/E,GAAV,GAAgB,wCAAhB;AACA+E,aAAS,CAACE,YAAV,CAAuB,2BAAvB,EAAoD,KAAKvD,SAAzD;AAEA,QAAIwD,KAAK,GAAGzF,QAAQ,CAACM,aAAT,CAAuB,MAAvB,CAAZ;AACAmF,SAAK,CAACD,YAAN,CAAmB,KAAnB,EAA0B,YAA1B;AACAC,SAAK,CAACC,IAAN,GAAa,4CAAb;AAEA,QAAIC,IAAI,GAAG3F,QAAQ,CAACM,aAAT,CAAuB,QAAvB,CAAX;AACAqF,QAAI,CAACJ,KAAL,GAAa,IAAb;;AACAI,QAAI,CAACC,MAAL,GAAc,MAAK;AAAG,WAAKrD,kBAAL;AAA2B,KAAjD;;AACAoD,QAAI,CAACpF,GAAL,GAAW,2CAAX;AAEAP,YAAQ,CAACY,IAAT,CAAcD,WAAd,CAA0B2E,SAA1B;AACAtF,YAAQ,CAACY,IAAT,CAAcD,WAAd,CAA0B8E,KAA1B;AACAzF,YAAQ,CAACY,IAAT,CAAcD,WAAd,CAA0BgF,IAA1B;AAEA;;;;;AAKH;;AA5IkD;;;mBAA1C/D,uBAAqBvC,+DAAAA,CAAAA,+DAAAA,GAAAA,+DAAAA,CAAAA,uEAAAA,GAAAA,+DAAAA,CAAAA,4DAAAA,GAAAA,+DAAAA,CAAAA,mDAAAA,GAAAA,+DAAAA,CAAAA,mEAAAA;AAAA;;;QAArBuC;AAAqBT;AAAA0E;AAAA;;;;;;;;;;;;;;;;;;ACpBlCxG,MAAAA,4DAAAA;AACIA,MAAAA,4DAAAA;AAA2BA,MAAAA,wDAAAA;AAAA,eAASyG,kBAAT;AAAuB,OAAvB;AAAyBzG,MAAAA,0DAAAA;AAEpDA,MAAAA,uDAAAA;AAEAA,MAAAA,4DAAAA;AAAmIA,MAAAA,wDAAAA;AAAA,eAASyG,uBAAT;AAA4B,OAA5B,EAA6B,UAA7B,EAA6B;AAAAzG,QAAAA,2DAAAA;;AAAA;;AAAA,eAAayG,qCAAb;AAAiD,OAA9E;AAAnIzG,MAAAA,0DAAAA;AAEAA,MAAAA,4DAAAA;AAA+BA,MAAAA,wDAAAA;AAAAA,QAAAA,2DAAAA;;AAAA;;AAAA,eAASyG,qBAAT;AAA6B,OAA7B;AAC7BzG,MAAAA,oDAAAA;AACFA,MAAAA,0DAAAA;AACJA,MAAAA,0DAAAA;;;;AAL6FA,MAAAA,uDAAAA;AAAAA,MAAAA,mEAAAA;AAAmIA,MAAAA,wDAAAA;AAG1NA,MAAAA,uDAAAA;AAAAA,MAAAA,gEAAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACPN;;GAEG;AAE6D;AACnB;AAEA;AAC4B;;AAalE,MAAM,kBAAkB;;oFAAlB,kBAAkB;+GAAlB,kBAAkB;mHATlB;YACL,yDAAY;YACZ,yDAAY;YACZ,gFAAkB;SACrB;mIAKQ,kBAAkB,mBAJZ,2EAAqB,aAJhC,yDAAY;QACZ,yDAAY;QACZ,gFAAkB,aAGZ,2EAAqB;;;;;;;;;;;;;;;;ACnBnC,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,mCAAmB;IACnB,2DAA2C;AAC/C,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFmF;AAGnC;AAEpB;AACS;AAIgB;;;;;;;;;;;;;ICJtC,uEAAsL;IAAtC,oRAAS,4BAAqB,KAAK,CAAC,IAAC;IACjL,uDAEA;IAOJ,4DAAI;;;IAVoF,4MAAoC;IACxH,0DAEA;IAFA,uGAEA;;;;IASJ,uEACyF;IAAtC,oRAAS,4BAAqB,KAAK,CAAC,IAAC;IACpF,uDAEA;IAOJ,4DAAI;;;IAXmF,4MAAmC;IACvH,wJAA+C;IAC9C,0DAEA;IAFA,uGAEA;;;;IAyXR,wEAA4G;IAArF,2TAAgC,IAAI,IAAC;IACxD,uEAAwF;IAAtC,sRAAS,6BAAqB,KAAK,CAAC,IAAC;IACnF,uDACJ;IAAA,4DAAI;IACR,4DAAK;;;IAHE,0DAA2B;IAA3B,4JAA2B;IAC1B,0DACJ;IADI,uFACJ;;;AD5XT,MAAM,aAAc,SAAQ,6DAAY;IAmE3C,YAAmB,OAAoB,EAAS,KAAsB,EAClD,IAAgB,EAAU,MAAc,EAAC,mCAAmC,CAC5E,QAAmB,EAAU,OAAoB,EAAU,MAAyB,EACrF,KAAwB,EAAU,SAAuB;QACxE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAJP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QACxC,aAAQ,GAAR,QAAQ,CAAW;QAAU,YAAO,GAAP,OAAO,CAAa;QAAU,WAAM,GAAN,MAAM,CAAmB;QACrF,UAAK,GAAL,KAAK,CAAmB;QAAU,cAAS,GAAT,SAAS,CAAc;QApEnE,iBAAY,GAAiB,yDAAoB,CAAC;QAS3D,mBAAc,GAAY,KAAK,CAAC;QAChC,kBAAa,GAAW,CAAC,CAAC;QAC1B,uBAAkB,GAAW,CAAC,CAAC;QAI/B,kBAAa,GAAY,KAAK,CAAC;QAKvB,eAAU,GAAY,KAAK,CAAC;QAC5B,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAKjD,eAAU,GAAY,KAAK,CAAC;QA4ChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,UAAU;aAClB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,OAAO,CAAC,QAAQ;aAChB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,MAAM,CAAC,MAAM;aACb,IAAI,CACD,sDAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,2DAAa,CAAC,EAC3C,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC;aACA,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC5B,CAAC,EAAE,GAAG,CAAC;QACX,CAAC,CAAC;IACV,CAAC;IA9DD,IAAY,YAAY;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,4EAA4E;YAC5E,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC7D;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAGD,IAAY,uBAAuB;QAC/B,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAChC,kGAAkG;YAClG,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;SACnF;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACzC,CAAC;IAID,IAAY,kBAAkB;QAC1B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,wFAAwF;YACxF,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;SACzE;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAoCD,QAAQ;QACJ,4BAA4B;QAC5B,4BAA4B;QAC5B,sBAAsB;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,yBAAyB;QACzB,yBAAyB;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,2BAA2B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;aACjG,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YAEvB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;oBAChC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACvC,IAAI,CAAC,CAAC,UAAU;4BAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,CAAC,CAAC,UAAU,CAAC,CAAC;oBAClG,CAAC,CAAC;iBACL;aACJ;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IACD;;;;;;;;;;;;;;;;;OAiBG;IAEH,OAAO;QACH,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAE5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,2BAA2B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;aACjG,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YAEvB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;oBAChC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACvC,IAAI,CAAC,CAAC,UAAU;4BAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,CAAC,CAAC,UAAU,CAAC,CAAC;wBAC9F,IAAI,CAAC,CAAC,MAAM;4BAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;oBACxE,CAAC,CAAC;iBACL;aACJ;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IAEH;;;;;;;;;OASG;IAEH;;;;;;;;;;;;;;;OAeG;IAEH;;;;;;;;;;;;;;OAcG;IAGH,iBAAiB;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,eAAe;QACX,4BAA4B;IAChC,CAAC;IAGD,UAAU,CAAC,IAAc;QAErB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE;YAC3B,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;aAC7D;YACD,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAChC,gCAAgC;gBAChC,mFAAmF;aACtF;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;aACzE;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;aAAM;YACH,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;aAChE;YACD,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACjC,mCAAmC;gBACnC,sFAAsF;aACzF;YACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;aAC5E;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;IACL,CAAC;IAED,aAAa,CAAC,CAAa;QACvB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,OAAO,GAA6B,CAAC,CAAC,MAAM,CAAC;QACjD,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,EAAE,EAAE;YACJ,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE;gBAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;aACvD;iBAAM;gBACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;aACpD;SACJ;IACL,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC5B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,IAAI,CAAC,UAAU;YAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,kBAAkB;QACd,IAAI,IAAI,CAAC,UAAU;YAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC;IAClC,CAAC;IAEM,QAAQ;QACX,IAAI,IAAI,CAAC,UAAU;YAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAClC,CAAC;IAEM,SAAS;QACZ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;;AA/SM,0BAAY,GAAW,GAAG,CAAC;AAC3B,0BAAY,GAAW,GAAG,CAAC;0EApBzB,aAAa;2GAAb,aAAa;QCvB1B,yEAAkB;QACd,yEAAsB;QAClB,wEAAuB;QAGnB,wEAA8H;QAE1H,qGAUI;QAEJ,qGAWI;QAyDR,4DAAK;QAyTL,uGAIK;QAGT,4DAAK;QACT,4DAAM;QACV,4DAAM;;QApZqD,0DAA8E;QAA9E,gMAA8E;QAErH,0DAAkF;QAAlF,gQAAkF;QAYlF,0DAAiF;QAAjF,+PAAiF;QA6XZ,0DAA6B;QAA7B,mIAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/YzE;AACE;AACF;AACiB;AACH;AACM;AACC;AACY;AACe;;AAiBtF,MAAM,UAAU;;oEAAV,UAAU;uGAAV,UAAU;2GAdV;YACL,yDAAY;YACZ,qFAAoB;YACpB,yDAAY;YACZ,wEAAiB;YACjB,qEAAc;YACd,2EAAgB;YAChB,4EAAiB;YACjB,uGAAwB;SAC3B;mIAKQ,UAAU,mBAJJ,0DAAa,aATxB,yDAAY;QACZ,qFAAoB;QACpB,yDAAY;QACZ,wEAAiB;QACjB,qEAAc;QACd,2EAAgB;QAChB,4EAAiB;QACjB,uGAAwB,aAGlB,0DAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtB2B;AAGY;AACL;AAChC;AACY;AAC8B;;;;;;;;;;;;IC2BnD,+DAAmK;IAAnK,6EAAiL;;;IAA/C,gGAAgC;;;;IAClK,+DAAiG;IAAjG,6EAA+G;;;IAA3D,4GAA4C;;;;IAxB5G,2EAAwH;IACpH,yEAA+B;IAC3B,yEAA8B;IAC1B,0EAA8B;IAC1B,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA4G;IAChH,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAAuK;IAAvK,4EAAuK;IAA3D,wVAA4B;IAAxI,4DAAuK;IAEvK,6EAAwH;IAA3B,iVAA0B;IACnH,uDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IAET,6JAAiL;IACjL,6JAA+G;IACnH,4DAAM;IAEN,+DAAgC;IAAhC,2EAAgC;IAC5B,wDAEA;IAAA,yEAAmD;IAC/C,wDACJ;IAAA,4DAAI;IACR,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAnCkF,sFAAsB;IAW9D,0DAAsC;IAAtC,sGAAsC;IAEpB,0DAA6B;IAA7B,6FAA6B;IACxF,0DAEA;IAFA,2GAEA;IAOU,0DAAkH;IAAlH,mMAAkH;IAClH,0DAAoC;IAApC,uGAAoC;IAIlD,0DAEA;IAFA,mHAEA;IAAG,0DAAgB;IAAhB,6IAAgB;IACf,0DACJ;IADI,qHACJ;;;IAMR,2EAA4H;;;IAA9F,gFAAuB;;;IACrD,2EAAyH;;;IAA5F,8EAAqB;;;IADlD,sJAA4H;IAC5H,sJAAyH;;;IAD7G,mFAAgB;IAChB,0DAAe;IAAf,kFAAe;;AD3BhC,MAAM,+BAAgC,SAAQ,6DAAY;IAa7D,YAAmB,OAAoB,EAAS,KAAsB,EAClD,IAAgB,EAAU,SAAuB,EACjD,EAAe,EAAU,QAAiB;QAC1D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,SAAI,GAAJ,IAAI,CAAY;QAAU,cAAS,GAAT,SAAS,CAAc;QACjD,OAAE,GAAF,EAAE,CAAa;QAAU,aAAQ,GAAR,QAAQ,CAAS;QAb9D,cAAS,GAAuB,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC;QAIjD,cAAS,GAAY,KAAK,CAAC;QAEnB,qBAAgB,GAAY,KAAK,CAAC;QAGlC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAOrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QAC5F,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAE5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,+DAAmB,EAAE,8DAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;SACnE,CAAC;QACF,IAAI,CAAC,QAAQ;aACR,YAAY;aACZ,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;QACnC,CAAC,CAAC;IACV,CAAC;IAED,cAAc;QACV,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,yBAAyB,EAAE,qDAAqD,CAAC;aACtG,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;YAC9B,IAAI,GAAG,EAAE;gBACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC7B;iBAAM;gBACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC5F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;QACL,CAAC,CAAC;IACV,CAAC;IAED,SAAS;QACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;IAC3D,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAqB,8EAAkB,CAAC,CAAC;SAC1E;IACL,CAAC;IAEO,QAAQ,CAAC,MAAc;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,OAAO;QAEjC,MAAM,KAAK,GAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,8DAAW,CAAC,EAAC,gBAAgB,EAAE,MAAM,EAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,yBAAyB,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;aAC5F,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,MAAM,GAAY,KAAK,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBAC3B,KAAK,SAAS;oBACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;oBAChG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;oBAClG,MAAM,GAAG,IAAI,CAAC;oBACd,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;oBACnC,MAAM;gBACV,KAAK,mBAAmB;oBACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACpG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;gBACV,KAAK,SAAS;oBACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;oBAChG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;aACb;YACD,IAAI,MAAM,EAAE;gBACR,IAAI,GAAG,GAAQ,UAAU,CAAC,GAAG,EAAE;oBAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACtB,YAAY,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC,EAAE,KAAK,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IAEX,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,GAAkB;QACzB,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACjD,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IACL,CAAC;;8GA9GQ,+BAA+B;6HAA/B,+BAA+B;QCxB5C,yEAAwB;QACpB,yEAA4B;QACxB,yEAA8B;QAC1B,yEAA+B;QAC3B,uDACJ;QAAA,4DAAM;QAEN,yEAA8B;QAC1B,uDACJ;QAAA,4DAAM;QACV,4DAAM;QAEN,8IAmCe;QAEf,uNAGc;QAElB,4DAAM;QACV,4DAAM;;;QAnDU,0DACJ;QADI,uGACJ;QAGI,0DACJ;QADI,0GACJ;QAGW,0DAAoE;QAApE,sIAAoE;;;;;;;;;;;;;;;;;;;;;;;;ACX9C;AACuC;AACpB;AACC;AACpB;AACK;;AAqB3C,MAAM,4BAA4B;;wGAA5B,4BAA4B;yHAA5B,4BAA4B;6HAlB5B;YACL,yDAAY;YACZ,uDAAW;YACX,+DAAmB;YACnB,2EAAgB;YAChB,yDAAY;YACZ,4DAAW;SACd;mIAWQ,4BAA4B,mBATjC,+FAA+B,aAR/B,yDAAY;QACZ,uDAAW;QACX,+DAAmB;QACnB,2EAAgB;QAChB,yDAAY;QACZ,4DAAW,aAOX,+FAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBe;AAGzB;AAEY;AACkC;;;;;;;;ICGzE,oEAAqE;;;IAAtC,gJAAkB;;;;IAVnD,yEAAoD;IACnD,yEAAkD;IAAjB,iTAAgB;IAChD,yEAAkB;IACjB,8DAAK;IAAL,sEAAK;IACJ,oEAA8G;IAC/G,4DAAM;IACP,4DAAM;IACP,4DAAM;IAEN,+DAAuB;IAAvB,yEAAuB;IACtB,uHAAqE;IACtE,4DAAM;IACP,4DAAM;;;IAF+C,0DAAU;IAAV,6EAAU;;ADOxD,MAAM,qBAAsB,SAAQ,6DAAY;IAOnD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,SAAuB,EAAU,IAAgB;QACjE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,cAAS,GAAT,SAAS,CAAc;QAAU,SAAI,GAAJ,IAAI,CAAY;QALrE,qBAAgB,GAAY,KAAK,CAAC;QAClC,0BAAqB,GAAY,KAAK,CAAC;QAC/B,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAKrD,IAAI,CAAC,qBAAqB,GAAG,uEAAe,CAAC,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;IACL,CAAC;IAED,IAAI;QACA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,qEAAa,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,gCAAgC,CAAC;aAClD,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,GAAG,EAAE;gBACL,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,GAAG,CAAC,CAAC;aACnE;iBAAM;gBACH,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aACpB;QACL,CAAC,CAAC,CAAC;IACX,CAAC;;0FAzCQ,qBAAqB;mHAArB,qBAAqB;QCjBlC,iHAYM;;QAZsB,sFAAsB;;;;;;;;;;;;;;;;;;;;;ACCL;AACmB;AACc;;AAYvE,MAAM,kBAAkB;;oFAAlB,kBAAkB;+GAAlB,kBAAkB;mHARlB;YACL,yDAAY;YACZ,qFAAoB;SACvB;mIAKQ,kBAAkB,mBAJZ,2EAAqB,aAHhC,yDAAY;QACZ,qFAAoB,aAGd,2EAAqB;;;;;;;;;;;;;;;;;;;;;;;;ACXmB;;;;;;;;;ICQlC,yEAA4D;IACxD,qEAA6C;IACjD,4DAAM;;;IADG,0DAAiC;IAAjC,6JAAiC;;;IAG1C,0EAAoD;IAChD,wEAAmG;IAC/F,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;;;IAT4C,0DAAwB;IAAxB,wFAAwB;IAClE,0DAEA;IAFA,8FAEA;;ADHrB,MAAM,iBAAkB,SAAQ,6DAAY;IAQ/C,YAAY,OAAoB,EAAE,KAAsB,EACpC,SAAuB;QACvC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADN,cAAS,GAAT,SAAS,CAAc;QALlC,gBAAW,GAAW,IAAI,CAAC;QAC3B,cAAS,GAAW,IAAI,CAAC;QACzB,gBAAW,GAAW,EAAE,CAAC;IAKlC,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,YAAY,MAAM;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnJ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,YAAY,MAAM;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/H,CAAC;;kFAhBQ,iBAAiB;+GAAjB,iBAAiB;QCd9B,yEAAuB;QACnB,yEAAuB;QACnB,yEAAkC;QAC9B,+EAAkE;QAElE,yEAA2B;QACvB,mEAAyE;QAEzE,yEAAgC;QAC5B,6GAEM;QAEN,6GAUM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;;QAzBsB,0DAAgC;QAAhC,yFAAgC;QAGJ,0DAA2B;QAA3B,oJAA2B;QAGtB,0DAAiB;QAAjB,iFAAiB;QAIzB,0DAAiB;QAAjB,iFAAiB;;;;;;;;;;;;;;;;;;;;;;;ACZzB;AACW;AACY;AACvB;AACiC;;AAiBvE,MAAM,cAAc;;4EAAd,cAAc;2GAAd,cAAc;+GAdd;YACL,yDAAY;YACZ,qFAAoB;YACpB,8EAAiB;YACjB,yDAAY;SACf;mIASQ,cAAc,mBAPnB,mEAAiB,aANjB,yDAAY;QACZ,qFAAoB;QACpB,8EAAiB;QACjB,yDAAY,aAMZ,mEAAiB;;;;;;;;;;;;;;;;;;;;;;;AClB+D;AAClC;;;;;;;;;ICAlD,uEAAqG;IAA1B,iUAAyB;IAChG,uDAEA;IAAA,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IAPA,0DAEA;IAFA,2FAEA;;;;IAOJ,uEAAsG;IAA1B,iUAAyB;IACjG,uDAEA;;IAAA,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IAPA,0DAEA;IAFA,mLAEA;;;IAdR,yEAAwF;IACpF,uHAQI;IAEJ,uHAQI;IACR,4DAAM;;;IAnBE,0DAAc;IAAd,iFAAc;IAUd,0DAAe;IAAf,kFAAe;;ADGhB,MAAM,yBAA0B,SAAQ,6DAAY;IAavD,YAAY,OAAoB,EAAE,KAAsB,EACrC,MAAuB;QACtC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,WAAM,GAAN,MAAM,CAAiB;QANhC,gBAAW,GAAkC,IAAI,uDAAY,EAAmB,CAAC;IAQ3F,CAAC;IAED,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,UAAU,GAAG;YACd,gDAAgD;YAChD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC;SACpD,CAAC;IACN,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/F,CAAC;IAED,aAAa;QACT,MAAM,IAAI,GAAoB;YAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC;YACxB,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;;kGAzCQ,yBAAyB;uHAAzB,yBAAyB;QCdtC,qHAoBM;;QApBoC,kHAA4C;;;;;;;;;;;;;;;;;;;;;;;;;;ACA4B;AAC5D;AAKY;AACrC;;;;;;;;;;;ICP7B,yEAAmE;IAC/D,uEAA0I;IAArC,yTAAuB,KAAK,EAAE,IAAI,KAAE;IACrI,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAoH;IACxH,4DAAM;IACV,4DAAM;IACV,4DAAI;IAEJ,+DAAqC;IAArC,2EAAqC;IACjC,2EAAqH;IAA3D,kUAA0B;IAApF,4DAAqH;IAAA,4DAAC;IAAA,sEAAsD;IAChL,qEAAe;IAEf,uEAAoI;IAAnC,yTAAuB,IAAI,EAAC,IAAI,KAAE;IAC/H,0EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,qEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAI;IACR,4DAAM;;;IAnBwD,0DAA0C;IAA1C,mKAA0C;IAQtF,0DAAsB;IAAtB,sFAAsB;IAIsB,0DAAsC;IAAtC,+JAAsC;;ADG7F,MAAM,2BAA4B,SAAQ,6DAAY;IAUzD,YAAY,OAAoB,EAAE,KAAsB,EACrC,MAAuB,EAAU,EAAe;QAC/D,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,WAAM,GAAN,MAAM,CAAiB;QAAU,OAAE,GAAF,EAAE,CAAa;QAT1D,iBAAY,GAAW,CAAC,CAAC;QAEzB,aAAQ,GAAY,KAAK,CAAC;QACzB,gBAAW,GAAkC,IAAI,uDAAY,EAAmB,CAAC;QAG3F,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAM7C,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY,EAAE;YAChI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,KAAK,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACpF,CAAC;YACF,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;aACtC;iBAAM;gBACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;aACvC;SACJ;IACL,CAAC;IAED,UAAU;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,IAAI,EAAE,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAC,EAAE,CAAC,8DAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9E,KAAK,EAAE,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;SACxC,CAAC;IACN,CAAC;IAED,eAAe;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC;aACnD;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;gBAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC;aACtC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;gBAC3E,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAC,CAAC;aACrE;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC/E;SACJ;IACL,CAAC;IAED,aAAa,CAAC,GAAkB;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,aAAa,EAAE;gBAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3D,IAAI,KAAK,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;gBAClE,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC;gBACjD,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;SACJ;IACL,CAAC;IAED,aAAa,CAAC,IAAa,EAAE,UAAmB;QAC5C,IAAI,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAClE,IAAI,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YAChC,MAAM,IAAI,GAAoB;gBAC1B,IAAI,EAAE,YAAY;gBAClB,YAAY,EAAE,IAAI,CAAC,YAAY;aAClC,CAAC;YACF,IAAI,UAAU;gBAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;IACL,CAAC;IAED,IAAI,WAAW;QACX,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IACrC,CAAC;;sGAxFQ,2BAA2B;yHAA3B,2BAA2B;QChBxC,wHAoBM;;QApB4B,mGAA+B;;;;;;;;;;;;;;;;;;;;;;;;ACAuB;AAClC;;;;;;;;ICMlD,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAkH;IACtH,4DAAM;IACV,4DAAM;;;IAIN,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAmH;IACvH,4DAAM;IACV,4DAAM;;ADJH,MAAM,mBAAoB,SAAQ,6DAAY;IAOjD,YAAY,OAAoB,EAAE,KAAsB,EACrC,MAAuB;QACtC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,WAAM,GAAN,MAAM,CAAiB;QAJjC,YAAO,GAAW,CAAC,CAAC;QACnB,gBAAW,GAAkC,IAAI,uDAAY,EAAmB,CAAC;IAK3F,CAAC;IAGD,aAAa,CAAC,KAAuB;QACjC,MAAM,IAAI,GAAoB;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,KAAK,CAAC,YAAY;SACnC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;;sFAnBQ,mBAAmB;iHAAnB,mBAAmB;QCfhC,gFAGqI;QAFzH,+LAAuB,yGACR,yBAAqB,IADb;QAGnC,4DAAa;QAEb,2MAMc;QAEd,2MAMc;;;;QApBF,sFAAyB;;;;;;;;;;;;;;;;;;;;;;;;;ACCQ;AACa;AACC;AACK;AACQ;AAC3B;AAC+B;;AAuBrE,MAAM,oBAAoB;;wFAApB,oBAAoB;iHAApB,oBAAoB;qHAnBpB;YACL,yDAAY;YACZ,sEAAgB;YAChB,uDAAW;YACX,yDAAY;YACZ,+DAAmB;SACtB;mIAaQ,oBAAoB,mBAXzB,sEAAmB;QACnB,mFAAyB;QACzB,uFAA2B,aAT3B,yDAAY;QACZ,sEAAgB;QAChB,uDAAW;QACX,yDAAY;QACZ,+DAAmB,aAQnB,sEAAmB;QACnB,mFAAyB;QACzB,uFAA2B;;;;;;;;;;;;;;;;ACrBnC,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,qCAAe;IACf,iCAAW;IACX,yCAAmB;AACvB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;;;;;;;;;;;;;;;;;;;;;;;ACTuF;AAClC;AAKU;;;;;;;;ICJxD,uEAAoI;IAAhD,8UAAoC,CAAC,aAAU;IAC/H,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAkH;IACtH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANyB,iLAAoC;;;;IAQrE,yEAAsE;IAClE,uEAAkF;IAApC,4TAAwB,CAAC,aAAU;IAC7E,iEACJ;IAAA,4DAAI;IACR,4DAAK;;;IAHE,0DAAwB;IAAxB,8JAAwB;;;;IAI/B,yEAA+I;IAC3I,uEAAwF;IAAvC,gZAAsC;IACnF,uDACJ;IAAA,4DAAI;IACR,4DAAK;;;;IAJ2F,6GAA8C;IACvI,0DAA2B;IAA3B,qKAA2B;IAC1B,0DACJ;IADI,oFACJ;;;;IAEJ,yEAAwG;IACpG,uEAAgG;IAA3C,4VAA0C;IAC3F,uDACJ;IAAA,4DAAI;IACR,4DAAK;;;IAHE,0DAA+B;IAA/B,4KAA+B;IAC9B,0DACJ;IADI,8FACJ;;;;IAGA,uEAA4I;IAAhD,kVAAoC,CAAC,aAAU;IACvI,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAmH;IACvH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANiC,iLAAoC;;;IA1BjF,wEAA4C;IACxC,wEAAsC;IAClC,+GAMI;IACR,4DAAK;IACL,iHAIK;IACL,iHAIK;IACL,iHAIK;IACL,wEAAsC;IAClC,+GAMI;IACR,4DAAK;IACT,4DAAK;;;IAhCO,0DAAuB;IAAvB,0FAAuB;IAQ1B,0DAA6B;IAA7B,gGAA6B;IAKb,0DAAqB;IAArB,4FAAqB;IAKrC,0DAA+D;IAA/D,+IAA+D;IAM5D,0DAA+B;IAA/B,yGAA+B;;ADXpC,MAAM,kBAAmB,SAAQ,6DAAY;IAShD,YAAY,OAAoB,EAAE,KAAsB,EACrC,MAAuB;QACtC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,WAAM,GAAN,MAAM,CAAiB;QANjC,cAAS,GAAW,CAAC,CAAC;QACtB,YAAO,GAAW,CAAC,CAAC;QACpB,qBAAgB,GAAG,MAAM,CAAC;QACzB,gBAAW,GAAkC,IAAI,uDAAY,EAAmB,CAAC;IAK3F,CAAC;IAED,QAAQ;IACR,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,UAAU;QACV,MAAM,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACzF,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAuB,CAAC;IAC9D,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,IAAW,IAAI;QAC9C,IAAI,CAAC,EAAE;YACH,CAAC,CAAC,cAAc,EAAE,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;YAE5B,MAAM,IAAI,GAAoB;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,YAAY,EAAE,IAAI,CAAC,YAAY;aAClC,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/B;IACL,CAAC;IAED,SAAS,CAAC,KAAa;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAoB,EAAE,QAAgB,EAAE,WAAmB;QAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAExC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAC1B,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CACrE,CAAC;IACN,CAAC;IAED,WAAW,CAAC,YAAoB,EAAE,GAAW,EAAE,QAAgB;QAC3D,OAAO,YAAY,IAAI,GAAG;YACtB,CAAC,CAAC,6DAAwB;YAC1B,CAAC,CAAC,YAAY,IAAI,QAAQ,GAAG,GAAG;gBAC5B,CAAC,CAAC,2DAAsB;gBACxB,CAAC,CAAC,+DAA0B,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,YAAoB,EAAE,KAAa,EAAE,GAAW,EAAE,QAAgB,EAAE,WAAmB;QAChG,MAAM,OAAO,GAAG;YACZ,CAAC,6DAAwB,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC;YAC3C,CAAC,2DAAsB,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,GAAG,WAAW,GAAG,KAAK,GAAG,CAAC;YAClE,CAAC,+DAA0B,CAAC,EAAE,GAAG,EAAE,CAAC,YAAY,GAAG,KAAK,GAAG,GAAG;SACjE,CAAC;QAEF,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,eAAe,CACX,UAAkB,EAClB,KAAa,EACb,QAAgB;QAEhB,OAAO,UAAU,KAAK,KAAK,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,QAAQ,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,GAAG,CAAC;YACX,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5D;YACD,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBAC3C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACrD;QACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;;oFA1FQ,kBAAkB;gHAAlB,kBAAkB;QCf/B,4GAkCK;;QAlCmB,kFAAkB;;;;;;;;;;;;;;;;;;;;ACCG;AACY;;AAclD,MAAM,eAAe;;8EAAf,eAAe;4GAAf,eAAe;gHAXf;YACL,yDAAY;SACf;mIASQ,eAAe,mBAPpB,oEAAkB,aAHlB,yDAAY,aAMZ,oEAAkB;;;;;;;;;;;;;;;;;;ACNnB,MAAM,QAAQ;IACjB,SAAS,CAAC,GAAsB;QAC5B,IAAI,KAAK,GAAG,eAAe,CAAC;QAC5B,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;;gEALQ,QAAQ;oHAAR,QAAQ;;;;;;;;;;;;;;;;;;;;;;ACLe;AACkB;AACV;AACP;AACM;;AAoBpC,MAAM,iBAAiB;;kFAAjB,iBAAiB;8GAAjB,iBAAiB;mHALf;QACP,wDAAW;KACd;mIAGQ,iBAAiB,mBAhBtB,+CAAQ;QACR,iEAAiB;QACjB,gDAAQ;QACR,sDAAW,aAGX,+CAAQ;QACR,iEAAiB;QACjB,gDAAQ;QACR,sDAAW;;;;;;;;;;;;;;;;;;ACbZ,MAAM,WAAW;IACpB,SAAS,CAAC,GAAW,EAAE,IAAY;QAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,IAAI,IAAI,EAAE;YACnC,OAAO,GAAG,CAAC;SACd;QAED,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE;YACnB,IAAI,GAAG,GAAW,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SAC3D;aAAM;YACH,OAAO,GAAG,CAAC;SACd;IACL,CAAC;;sEAZQ,WAAW;uHAAX,WAAW;;;;;;;;;;;;;;;;;;;;ACJ8B;;;;AAK/C,MAAM,iBAAkB,SAAQ,6DAAY;IAE/C,YAAY,OAAoB,EAAE,KAAsB;QACpD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,uBAA+B,CAAC;QAErD,IAAG,CAAC,KAAK,KAAK,CAAC,IAAI,oBAAoB,KAAK,CAAC,CAAE,IAAG,CAAC,KAAK,KAAK,IAAI,IAAI,oBAAoB,KAAK,CAAC,CAAE,EAAE;YAC/F,OAAO,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;SACjD;QACD,IAAG,CAAC,KAAK,KAAK,CAAC,IAAI,oBAAoB,GAAG,CAAC,CAAE,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,oBAAoB,GAAG,CAAC,CAAE,EAAC;YAC3F,OAAO,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;SAClD;aACI,IAAG,KAAK,GAAG,CAAC,EAAE;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;SAClC;;YAEG,OAAO,EAAE;IACjB,CAAC;;kFAnBQ,iBAAiB;0HAAjB,iBAAiB;;;;;;;;;;;;;;;;;;ACL+B;;AAGtD,MAAM,QAAQ;IAEjB,SAAS,CAAC,KAAa;QACnB,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC,wEAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAE;QAEvD,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;;gEARQ,QAAQ;gHAAR,QAAQ;;;;;;;;;;;;;;;;;;;;;IEJrB,yEAAqC;IACjC,oEAAoC;IAEpC,yEAA4B;IACxB,oEAAsD;IACtD,oEAAsD;IAC1D,4DAAM;IACV,4DAAM;;ADGC,MAAM,kBAAkB;IAI3B;QAFS,YAAO,GAAY,KAAK,CAAC;IAElB,CAAC;;oFAJR,kBAAkB;gHAAlB,kBAAkB;QCV/B,8GAOM;;QAPA,6EAAa;;;;;;;;;;;;;;;;;;;;ACC0B;AACY;;AAQlD,MAAM,eAAe;;8EAAf,eAAe;4GAAf,eAAe;gHALf,CAAC,yDAAY,CAAC;mIAKd,eAAe,mBAJT,oEAAkB,aADvB,yDAAY,aAEZ,oEAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNsB;AAGY;AAErC;AACyD;AAC7C;;;;;;;;;;;ICPrC,yEAA+E;IAC3E,yEAA0E;IAA/C,+VAA8C;IACrE,uDAEA;IAAA,yEAAgC;IAC5B,8DAAK;IAAL,sEAAK;IACD,oEAAuH;IAC3H,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAAmD;IAAnD,yEAAmD;IAC/C,yEAA0B;IACtB,yEAAgC;IAC5B,uDACJ;IAAA,4DAAM;IAEN,uEAAkS;;IAElS,0EAAgC;IAC5B,wDACJ;IAAA,4DAAM;IAEN,uEAAkS;;IACtS,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IA1BuB,4GAAiD;IAEtE,0DAEA;IAFA,4KAEA;IAOC,0DAAuB;IAAvB,uFAAuB;IAGhB,0DACJ;IADI,kGACJ;IAEyO,0DAAuD;IAAvD,sHAAuD;IAA3F,8FAAmC;IAAjJ,8MAAwE;IAG3J,0DACJ;IADI,gGACJ;IAEyO,0DAAuD;IAAvD,sHAAuD;IAA3F,8FAAmC;IAAjJ,8MAAwE;;ADRxK,MAAM,oBAAqB,SAAQ,6DAAY;IA4BlD,YAAY,OAAoB,EAAE,KAAsB,EAAU,EAAe,EAAS,MAAuB,EAC7F,YAA8B;QAC9C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFwC,OAAE,GAAF,EAAE,CAAa;QAAS,WAAM,GAAN,MAAM,CAAiB;QAC7F,iBAAY,GAAZ,YAAY,CAAkB;QAzBlD,sBAAiB,GAAY,KAAK,CAAC;QACnC,sBAAiB,GAAY,KAAK,CAAC;QAOnC,sBAAiB,GAAY,KAAK,CAAC;QAE3B,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAkBrD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAEjF,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACrE,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,MAAM,CAAC,YAAY;aACnB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,MAAM,GAAkB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,MAAM,CAAC,iBAAiB;aACxB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IAGX,CAAC;IAtCD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;IA8BO,IAAI;QACR,MAAM,UAAU,GAAkB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAE9D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;SAChF;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;SAC/E;IACL,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,EAAU,EAAE,SAAkB;QAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO;SACV;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACpB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,EAAE;SACf,EAAE,EAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;IAG/C,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,EAAU;QAEvC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACnC,OAAO;SACV;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,8DAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,gEAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,8DAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,gEAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3F,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,YAAY;aACtB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACX,CAAC;IAGO,aAAa;QAEjB,IAAI,MAAM,GAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,QAAQ,GAAW,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;YACzC,QAAQ,GAAG,IAAI,CAAC;SACnB;QAGD,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAClD,IAAI,QAAQ,GAAW,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;YACzC,QAAQ,GAAG,IAAI,CAAC;SACnB;QAGD,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB,CAAC,QAAgB,EAAE,QAAgB;QAClD,IAAI,UAAU,GAAG,6FAA+B,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,UAAU,EAAE;YACZ,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC/B;QAGD,IAAI,QAAQ,GAAmB;YAC3B,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ;SAC/B,CAAC;QACF,oBAAoB;QACpB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,UAAU,IAAI,WAAW,GAAG,IAAI,EAAE;YACtC,kGAAoC,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,UAAU,GAAG,6FAA+B,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtF,WAAW,EAAE,CAAC;SACjB;QAED,IAAI,UAAU,EAAE;YACZ,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SACvC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGO,aAAa;QAEjB,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,QAAQ,GAAW,IAAI,CAAC;QAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAE/C,IAAI,UAAU,EAAE;YACZ,IAAI,UAAU,CAAC,MAAM,EAAE;gBACnB,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;aAC5B;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;aAC5B;SACJ;QAED,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAGjD,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACvB,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;IACL,CAAC;IAED,YAAY;QACR,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,EAAE,GAAG,CAAC,CAAC;IAEZ,CAAC;IAED,cAAc,CAAC,WAAqB;QAChC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE;YAC/D,IAAI,MAAM,GAAkB,IAAI,CAAC,aAAa,EAAE,CAAC;YAEjD,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO;aACV;YAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;SACvC;IACL,CAAC;IAGD,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;wFAhNQ,oBAAoB;kHAApB,oBAAoB;;;;;;QChBjC,8MA4Bc;;;;;;;;;;;;;;;;;;;;;AC3B+B;AACmB;AACF;;AAmBvD,MAAM,iBAAiB;;kFAAjB,iBAAiB;8GAAjB,iBAAiB;kHAfjB;YACL,yDAAY;YACZ,uDAAW;YACX,+DAAmB;SACtB;mIAWQ,iBAAiB,mBATtB,yEAAoB,aALpB,yDAAY;QACZ,uDAAW;QACX,+DAAmB,aAOnB,yEAAoB;;;;;;;;;;;;;;;;;;;;;;;;ACP0B;AAEzB;AACY;;;;;;;;;ICErB,0EAA2E;IACvE,gFAAkM;IAAtD,0gBAAqD;IAAjM,4DAAkM;IAElM,4EAA6B;IACzB,uDACJ;;IAAA,4DAAQ;IACZ,4DAAM;;;;IALW,0DAAoB;IAApB,yFAAoB;IAAC,sKAAwD;IAEnF,0DAAqB;IAArB,0FAAqB;IACxB,0DACJ;IADI,uMACJ;;;;IARhB,+DAAuD;IAAvD,wEAAuD;IACnD,yEAAyE;IACrE,yEAA0B;IACtB,sJAMM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAXgB,0DAA6C;IAA7C,wGAA6C;IAEtC,0DAAY;IAAZ,qFAAY;;;;IAgBlC,0EAAiF;IAC7E,gFAEsI;IAAtD,8jBAAqD;IAFrI,4DAEsI;IAEtI,4EAA6B;IACzB,uDACJ;;IAAA,4DAAQ;IACZ,4DAAM;;;;IAPW,0DAAwB;IAAxB,kGAAwB;IAC9B,6FAAgC;IAGhC,0DAAqB;IAArB,2FAAqB;IACxB,0DACJ;IADI,yMACJ;;;IARR,wEAA8D;IAC1D,sKAQM;IACV,qEAAe;;;;IAT+B,0DAAoC;IAApC,sHAAoC;;;;IAa1F,wEAAiH;IAAhD,uVAAoB,IAAI,KAAE;IACvF,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAuH;IAC3H,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IAPA,0DAEA;IAFA,0GAEA;;;;IAQA,wEAAoG;IAAtE,iWAAoB,KAAK,KAAE;IACrD,uDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAuH;IAC3H,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IAPA,0DAEA;IAFA,2GAEA;;;;IA/BZ,+DAAsD;IAAtD,wEAAsD;IAClD,yEAAyE;IACrE,yEAA0B;IACtB,yKAUe;IACnB,4DAAM;IACV,4DAAM;IAEN,mJAQI;IAEJ,mPAUc;IAClB,qEAAe;;;;IArCgB,0DAA6C;IAA7C,wGAA6C;IAE7B,0DAAc;IAAd,qFAAc;IAcrD,0DAAmB;IAAnB,oFAAmB;;;;IA3C/B,yEAA+G;IAC3G,yEAA0E;IAA/C,6WAA8C;IACrE,uDAEA;IAAA,yEAAgC;IAC5B,8DAAK;IAAL,sEAAK;IACD,oEAAuH;IAC3H,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,yJAYe;IAGf,yJAsCe;IACnB,4DAAM;;;IAjEsD,4GAAiD;IAErG,0DAEA;IAFA,6GAEA;IAOW,0DAAsC;IAAtC,kHAAsC;IAetC,0DAAqC;IAArC,iHAAqC;;;IA1BxD,iIAiEM;;;IAjEA,iIAA2B;;ADqB9B,MAAM,uBAAwB,SAAQ,6DAAY;IAerD,YAAY,OAAoB,EAAE,KAAsB,EAAU,MAAuB;QACrF,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADwC,WAAM,GAAN,MAAM,CAAiB;QAXzF,sBAAiB,GAAY,KAAK,CAAC;QAKnC,sBAAiB,GAAkB,EAAE,CAAC;QAEtC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAEjD,mBAAc,GAAW,CAAC,CAAC;QAKvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC5D,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,8BAA8B;QAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAEvD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;IACL,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO;SACV;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;aACjF;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAC3D,CAAC;IAED,eAAe,CAAC,EAAU,EAAE,OAAgB;QAExC,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE/C,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACvD,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,GAAY;QACnB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;8FAnEQ,uBAAuB;qHAAvB,uBAAuB;;;;;;QCtBpC,+MAoEc;;;;;;;;;;;;;;;;;;;;;AChE+B;AACuB;AACzB;;AAWpC,MAAM,oBAAoB;;wFAApB,oBAAoB;iHAApB,oBAAoB;qHARpB;YACL,yDAAY;YACZ,uDAAW;SACd;mIAKQ,oBAAoB,mBAJd,+EAAuB,aAHlC,yDAAY;QACZ,uDAAW,aAGL,+EAAuB;;;;;;;;;;;;;;;;;;ACX2C;;AAIzE,MAAM,qBAAqB;IAE9B,SAAS,CAAC,OAA6B;QACnC,IAAI,CAAC,OAAO;YACR,OAAO,IAAI,CAAC;QAEhB,OAAO,IAAI,uFAAwB,CAAuB,OAAO,CAAC,CAAC;IACvE,CAAC;;0FAPQ,qBAAqB;0IAArB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;ACNW;AACoC;AACjB;AACC;AAC8B;AAC5B;AAC+B;;AA4B3F,MAAM,mBAAmB;;sFAAnB,mBAAmB;gHAAnB,mBAAmB;oHAhBnB;YACL,yDAAY;YACZ,uDAAW;YACX,+DAAmB;YACnB,2EAAgB;SACnB;mIAWQ,mBAAmB,mBAxBxB,4FAAsB;QACtB,mEAAiB;QACjB,mEAAiB;QACjB,4EAAqB;QACrB,kFAAwB;QACxB,mFAAyB;QACzB,oEAAkB,aAGlB,yDAAY;QACZ,uDAAW;QACX,+DAAmB;QACnB,2EAAgB,aAGhB,4FAAsB;QACtB,mEAAiB;QACjB,mEAAiB;QACjB,4EAAqB;QACrB,kFAAwB;QACxB,mFAAyB;QACzB,oEAAkB;;;;;;;;;;;;;;;;;;;;AC9BkG;;AAMrH,MAAM,iBAAiB;IAE1B,SAAS,CAAC,OAAwB;QAC9B,IAAI,CAAC,OAAO;YACR,OAAO,IAAI,CAAC;QAEhB,IAAS,OAAQ,CAAC,EAAE,EAAE;YAClB,OAAO,IAAI,sFAA2B,CAAmC,OAAO,CAAC,CAAC;SACrF;aAAM;YACH,OAAO,IAAI,+EAAoB,CAAkB,OAAO,CAAC,CAAC;SAC7D;IACL,CAAC;;kFAXQ,iBAAiB;kIAAjB,iBAAiB;AAgBvB,MAAM,iBAAiB;IAE1B,SAAS,CAAC,OAAqC;QAC3C,IAAI,CAAC,OAAO;YACR,OAAO,IAAI,CAAC;QAEhB,OAAO,IAAI,sFAA2B,CAAmC,OAAO,CAAC,CAAC;IACtF,CAAC;;kFAPQ,iBAAiB;kIAAjB,iBAAiB;AAYvB,MAAM,kBAAkB;IAE3B,SAAS,CAAC,OAA0B;QAChC,IAAI,CAAC,OAAO;YACR,OAAO,IAAI,CAAC;QAEhB,OAAO,IAAI,gFAAqB,CAAyB,OAAO,CAAC,CAAC;IACtE,CAAC;;oFAPQ,kBAAkB;oIAAlB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;AC3BR;AAC2C;AACT;AAKD;AACH;;;;;;;;;ICIjD,+DAAoF;IAApF,6EAAkG;;;IAAlD,mGAAmC;;;;IACnF,+DAA4I;IAA5I,6EAA0J;;;IAA7G,qMAA8F;;;;IAC3I,+DAAwI;IAAxI,6EAAsJ;;;IAAzG,iMAA0F;;;;IACvI,+DAAiG;IAAjG,6EAA+G;;;IAA5E,6JAA6D;;ADC7F,MAAM,sBAAuB,SAAQ,6DAAY;IAcpD,YACI,KAAsB,EACtB,OAAoB,EACZ,EAAe;QAEvB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFd,OAAE,GAAF,EAAE,CAAa;QAdlB,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAY,KAAK,CAAC;QAEzB,SAAI,GAA2B,IAAI,CAAC;QACnC,cAAS,GAAwC,IAAI,uDAAY,EAAyB,CAAC;QAE5F,WAAM,GAAW,IAAI,CAAC;QACrB,iBAAY,GAAyB,IAAI,uDAAY,EAAU,CAAC;QAEnE,SAAI,GAAc,IAAI,CAAC;QAS1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,+DAAmB,EAAE,8DAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,gEAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1I,CAAC,CAAC;IACP,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;aAClC,CAAC,CAAC;SACN;aACI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,IAAI,EAAE;YAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,CAAC;aACd,CAAC,CAAC;SACN;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI,qEAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE;YACxG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,IAAI,CAAC,MAAM;aACxB,CAAC,CAAC;SACN;IACL,CAAC;IAEM,cAAc,CAAC,IAAsB;QACxC,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAW,UAAU,CAAoB,IAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACjF,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;SAClC;aACI;YACD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,oEAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACrC,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;aAC7B;YACD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1C;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;YAC9B,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjB,QAAQ,EAAE,MAAM;aACnB,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3C;IACL,CAAC;IAEM,SAAS,CAAC,IAAsB;QACnC,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAW,UAAU,CAAoB,IAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/E,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;SAClC;aACI;YACD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,oEAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACrC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;aACnC;YACD,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1C;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACjB,QAAQ,EAAE,MAAM;SACnB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,MAAM,CAAC,SAAS,CAAC;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;YAC/B,OAAO,IAAI,CAAC;QAEhB,MAAM,GAAG,GAAG,oEAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,GAAkB;QAC3B,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACjD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;aAChD;SACJ;IACL,CAAC;IAEM,gBAAgB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC,CAAC,IAAI,CAAC;IACb,CAAC;IAED,IAAW,MAAM;QACb,IAAI;YACA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;YAC9C,IAAI,KAAK,EAAE;gBACP,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;oBAC5B,OAAO,WAAW,CAAC;iBACtB;aACJ;SACJ;QACD,MAAM;YACF,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,WAAW;QACd,IAAI,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5H,CAAC;;4FAxJQ,sBAAsB;oHAAtB,sBAAsB;;QCzBnC,yEAAmK;QAA5D,0IAAS,wBAAwB,SAAE,uBAAuB,IAAC;QAC9J,8EAAoN;QAArG,mJAAS,iBAAa,IAAC,uFAAW,iBAAa,IAAxB;QAAtI,4DAAoN;QAEpN,yEAAiC;QAC7B,4EAA2I;QAAzD,0RAAS,kBAAsB,IAAC;QAC9G,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAAkH;QACtH,4DAAM;QACV,4DAAM;QACV,4DAAS;QAET,+DAAiJ;QAAjJ,4EAAiJ;QAA9D,0RAAS,uBAA2B,IAAC;QACpH,yEAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,qEAAoH;QACxH,4DAAM;QACV,4DAAM;QACV,4DAAS;QACb,4DAAM;QAEN,oIAAkG;QAClG,oIAA0J;QAC1J,oIAAsJ;QACtJ,oIAA+G;QACnH,4DAAM;;QAzBc,kIAA+D;QACiF,0DAAkD;QAAlD,2GAAkD;QAG3F,0DAAuB;QAAvB,oFAAuB;QAQjB,0DAAuB;QAAvB,oFAAuB;QAStI,0DAAgC;QAAhC,oGAAgC;QAChC,0DAA6B;QAA7B,iGAA6B;QAC7B,0DAA6B;QAA7B,iGAA6B;QAC7B,0DAAmB;QAAnB,mFAAmB;;;;;;;;;;;;;;;;;;;;ACvBwE;;AAMtG,MAAM,wBAAwB;IAEjC,SAAS,CAAC,OAAoC;QAC1C,IAAI,CAAC,OAAO;YACR,OAAO,IAAI,CAAC;QAEhB,OAAO,IAAI,sFAA2B,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;;gGAPQ,wBAAwB;gJAAxB,wBAAwB;AAY9B,MAAM,yBAAyB;IAElC,SAAS,CAAC,OAAyB;QAC/B,IAAI,CAAC,OAAO;YACR,OAAO,IAAI,CAAC;QAEhB,OAAO,IAAI,uFAA4B,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;;kGAPQ,yBAAyB;kJAAzB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBtC;;;;GAIG;AAE8H;AACxB;AAKvC;AAErC;AACY;AAGoB;;;;;;;;;;;;;;;;ICD7C,2EAAkE;IAA1B,mUAAyB;IAC7D,+DAAK;IAAL,uEAAK;IACD,sEAA6G;IACjH,6DAAM;IACV,6DAAM;;;;IAEN,2EAAsE;IAA/B,wUAA8B;IACjE,+DAAK;IAAL,uEAAK;IACD,sEAAoH;IACxH,6DAAM;IACV,6DAAM;;;;IAId,yEAAsJ;IAClJ,wDACJ;IAAA,6DAAI;;;IAFkC,sNAA2C;IAC7E,2DACJ;IADI,kJACJ;;;IAEA,2EAAiF;IAC7E,2EAAuB;IACnB,wDACJ;IAAA,6DAAM;IAEN,2EAAuB;IACnB,wDACJ;IAAA,6DAAM;IACV,6DAAM;;;IANE,2DACJ;IADI,6RACJ;IAGI,2DACJ;IADI,yRACJ;;;;IA1CZ,0EAAoH;IAChH,0EAAgE;IAC5D,wEAA2E;IACvE,2EAAS;IACL,wEAA4H;;IAC5H,qEAAiR;IACrR,6DAAU;IACd,6DAAI;IACR,6DAAM;IAEN,0EAAkC;IAC9B,0EAAkC;IAC9B,wEAAoH;IAChH,yDACJ;IAAA,6DAAI;IAEJ,2EAA8B;IAC1B,yHAIM;IAEN,yHAIM;IACV,6DAAM;IACV,6DAAM;IAEN,qHAEI;IAEJ,yHAQM;IACV,6DAAM;IACV,6DAAM;;;IA7CD,sHAA4C;IAAsB,4JAA4C;IAC/E,2DAA+B;IAA/B,oIAA+B;IACxD,2DAA2C;IAA3C,uNAA2C;IAE9B,2DAAgG;IAAhG,6UAAgG;IACnG,2DAAoF;IAApF,uQAAoF;IAO1F,2DAA2C;IAA3C,uNAA2C;IAC1C,2DACJ;IADI,0IACJ;IAGuB,2DAAmB;IAAnB,uFAAmB;IAMnB,2DAAkB;IAAlB,sFAAkB;IAQzC,2DAAgC;IAAhC,wIAAgC;IAIJ,2DAA+C;IAA/C,4HAA+C;;ADFhF,MAAM,mBAAoB,SAAQ,6DAAY;IAmGjD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,OAAoB,EAAU,EAAe,EAC9C,UAAkC,EAAU,SAAuB,EAClE,OAAwB;QACxC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAJP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,YAAO,GAAP,OAAO,CAAa;QAAU,OAAE,GAAF,EAAE,CAAa;QAC9C,eAAU,GAAV,UAAU,CAAwB;QAAU,cAAS,GAAT,SAAS,CAAc;QAClE,YAAO,GAAP,OAAO,CAAiB;QAnGnC,eAAU,GAAuB,0EAAyB,CAAC;QAE3D,oBAAe,GAAY,KAAK,CAAC;QACjC,eAAU,GAAW,CAAC,CAAC;QACvB,gBAAW,GAAY,KAAK,CAAC;QAC7B,cAAS,GAAY,IAAI,CAAC;QAC1B,gBAAW,GAAW,EAAE,CAAC;QACzB,YAAO,GAAmB,SAAS;QACnC,WAAM,GAAY,KAAK,CAAC;QAEvB,uBAAkB,GAAsB,IAAI,wDAAY,EAAO,CAAC;QAChE,iBAAY,GAAyB,IAAI,wDAAY,EAAU,CAAC;QAQ1E,2BAAsB,GAAY,KAAK,CAAC;QAGxC,mBAAc,GAAW,OAAO,CAAC;QACjC,QAAG,GAAW,EAAE,CAAC;QAEjB,sBAAiB,GAAY,KAAK,CAAC,yCAAwC;QAoEnE,kBAAa,GAAiB,IAAI,0CAAO,EAAE,CAAC;QAShD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QAC9H,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,aAAa,CAAC;QACjF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAElC,IAAI,CAAC,OAAO,CAAC,kBAAkB;aAC1B,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CACN,GAAG,EAAE;YACD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACxC,CAAC,CACJ,CAAC;QAEN,IAAI,CAAC,UAAU,EAAE,CAAC;IAEtB,CAAC;IA3FD,IAAI,SAAS;QACT,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACvB,OAA2B,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;aACvD;iBAAM;gBACH,OAAyB,IAAI,CAAC,OAAQ,CAAC,SAAS,CAAC;aACpD;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,UAAU;QACV,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACvB,OAA2B,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;aAC/D;iBAAM;gBACH,OAAyB,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC;aACrD;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,aAAa;QACb,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACvB,OAAO,CAAC,CAAC;aACZ;iBAAM;gBACH,OAAyB,IAAI,CAAC,OAAQ,CAAC,aAAa,CAAC;aACxD;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,YAAY;QACZ,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACvB,OAAa,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;aACnD;iBAAM;gBACH,OAAyB,IAAI,CAAC,OAAQ,CAAC,YAAY,CAAC;aACvD;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,SAAS;QACT,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACvB,OAAa,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC;aACpC;iBAAM;gBACH,OAAa,IAAI,CAAC,OAAQ,CAAC,MAAM,GAAS,IAAI,CAAC,OAAQ,CAAC,WAAW,CAAC,CAAC,CAAO,IAAI,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC,CAAO,IAAI,CAAC,OAAQ,CAAC,WAAW,CAAC;aACtI;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAW,kBAAkB;QACzB,OAAO,mEAAkB,CAAC;IAC9B,CAAC;IA+BD,QAAQ,CAAC,GAAkB,EAAE,EAAU;QACnC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACjD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SACjB;aAAM;YACH,MAAM,QAAQ,GAAG,MAAM,CAAO,GAAG,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACxB,OAAO;aACV;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE;gBACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACpC;SACJ;IACL,CAAC;IAED,GAAG,CAAC,EAAU;QACV,IAAI,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACxC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAEjC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,OAAO;SACV;aAAM;YACH,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SACjC;QAED,IAAI,IAAI,GAA0B;YAC9B,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;YACxB,SAAS,EAAE,EAAE;SAChB,CAAC;QAEF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;IACR,CAAC;IAED,eAAe;QACX,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;SACxB,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;SACpC;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,GAAG,EAAE,CAAC,CAAC,CAAC;SACX,CAAC;IACN,CAAC;IAED,YAAY;QACR,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAGO,yBAAyB;QAC7B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACvB,IAAI,CAAC,sCAAsC,CAAoB,IAAI,CAAC,OAAO,CAAC,CAAC;SAChF;aAAM;YACH,IAAI,CAAC,yCAAyC,CAAkB,IAAI,CAAC,OAAO,CAAC,CAAC;SACjF;IACL,CAAC;IAEO,yCAAyC,CAAC,IAAqB;QAEnE,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACrE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAEnD,IAAI,CAAC,GAAG,GAAG,wEAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAE1D,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,IAAI,EAAE,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,EAAE;YACzE,UAAU,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAC7D;QAED,IAAI,CAAC,YAAY,GAAG;YAChB,SAAS,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,8EAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;YAC7G,IAAI,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,8EAA6B,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;YAC9G,UAAU,EAAE,IAAI,CAAC,gBAAgB;YACjC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;YACnH,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc;YAC3D,UAAU,EAAE,IAAI,CAAC,gBAAgB;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,kBAAkB;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,YAAY;YAC5B,YAAY,EAAE,IAAI,CAAC,eAAe;YAClC,iBAAiB,EAAE,UAAU;YAC7B,eAAe,EAAE,IAAI,CAAC,kBAAkB;YACxC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,aAAa;YAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC;YACpC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC;QAEF,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,8EAA6B,EAAE;YAC5E,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC7D;aAAM;YACH,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;SAC1E;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;YAClC,gEAAmB;YACnB,+DAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC7C,iEAAoB,CAAC,CAAC,CAAC;YACvB,2DAAc,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YAC7C,2DAAc,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;SACtC,CAAC,CAAC;IACP,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW;YAAE,OAAO,MAAM,CAAC,SAAS,CAAC;QAClF,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACzE,OAAO,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,IAAsB;QAC5B,MAAM,IAAI,GAAW,QAAQ,CAAoB,IAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAW,QAAQ,CAAoB,IAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE,MAAM;SACd,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,IAAsB;QACjC,MAAM,IAAI,GAAW,QAAQ,CAAoB,IAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAW,QAAQ,CAAoB,IAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACpB,GAAG,EAAE,MAAM;SACd,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAEO,sCAAsC,CAAC,KAAwB;IAEvE,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAEO,cAAc;QAClB,IAAI,IAAI,CAAC,OAAO,IAAU,IAAI,CAAC,OAAQ,CAAC,KAAK,IAAI,IAAI,IAAU,IAAI,CAAC,OAAQ,CAAC,OAAO,EAAE;YAClF,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC1H,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,YAAY;QACZ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEzC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IAChI,CAAC;IAED,aAAa;QACT,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YAAE,OAAO;QAEnC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC3B,SAAS,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YACvE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;SAC3C,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB;QACd,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;YAAE,OAAO;QAEnC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAChI,CAAC;;sFA3UQ,mBAAmB;kHAAnB,mBAAmB;QCjChC,kHA6CM;;QA7C6C,mFAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOxB;AACe;AACf;AACmB;AACC;AACa;AAChB;AACS;AACE;;AAkBlE,MAAM,gBAAgB;;gFAAhB,gBAAgB;6GAAhB,gBAAgB;iHAfhB;YACL,yDAAY;YACZ,yDAAY;YACZ,uDAAW;YACX,qFAAoB;YACpB,+DAAmB;YACnB,2EAAgB;YAChB,wEAAiB;YACjB,iFAAkB;YAClB,mFAAkB;SACrB;mIAKQ,gBAAgB,mBAJV,uEAAmB,aAV9B,yDAAY;QACZ,yDAAY;QACZ,uDAAW;QACX,qFAAoB;QACpB,+DAAmB;QACnB,2EAAgB;QAChB,wEAAiB;QACjB,iFAAkB;QAClB,mFAAkB,aAGZ,uEAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBV;AAKW;AAGiC;AACtC;AAOY;AAC8D;;;;;;;;;;;ICd3E,0EAA+D;IAC3D,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,0GACJ;;;;IAqCQ,0EAA0F;IACtF,uEAA2H;IAE3H,4EAA2D;IACvD,0EAAsG;IAClG,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAA8C;IAA9C,0EAA8C;IAC1C,uDACJ;IAAA,4DAAM;IACV,4DAAQ;IACZ,4DAAM;;;IAfK,0DAAkD;IAAlD,iIAAkD;IAAiB,6GAAgD;IAEnH,0DAAmD;IAAnD,kIAAmD;IACR,0DAAuD;IAAvD,qKAAuD;IASjG,0DACJ;IADI,8FACJ;;;IAfZ,wEAAsE;IAClE,6LAgBM;IACV,qEAAe;;;IAjBL,0DAAyB;IAAzB,yFAAyB;;;;IAsBnC,wEAAuD;IACnD,6GAAuJ;IAA3F,gcAAyB;IAAkE,4DAAyC;IACpM,qEAAe;;;;IAD6B,0DAAmB;IAAnB,gFAAmB;;;;IAvEvF,wEAA+C;IAC3C,4EAAsC;IAClC,2EAA0C;IACtC,yEAAwB;IACpB,yEAA6D;IAAjC,gcAAgC;IACxD,yEAAqC;IACjC,uDACJ;IAAA,4DAAM;IAEN,6KAEM;IAEN,0EAA2B;IACvB,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAAiD;IAAjD,2EAAiD;IAC7C,2EAA2B;IACvB,2EAAmC;IAC/B,2EAAiC;IAC7B,2EAA4C;IACxC,wDACJ;IAAA,4DAAM;IAEN,2EAAiC;IAC7B,wDACJ;IAAA,4DAAM;IACV,4DAAM;IAEN,4EAAwE;IAA1B,sXAAyB;IACnE,iFAAoK;IAAvF,sdAA2C;IAAxH,4DAAoK;IACpK,2EAAiD;IAA/B,icAA8B;IAC5C,8DAAK;IAAL,uEAAK;IACD,sEAA8G;IAClH,4DAAM;IACV,4DAAM;IACV,4DAAO;IACX,4DAAM;IAEN,+DAAoC;IAApC,2EAAoC;IAChC,iMAkBe;IAEnB,4DAAM;IAEN,2EAAqC;IACjC,iMAEe;IACnB,4DAAM;IACV,4DAAM;IAEN,2EAAsD;IAClD,yEAAuG;IAAzE,sXAA6B;IACvD,wDACJ;IAAA,4DAAI;IAEJ,8EAAuE;IAA/D,qXAAuB;IAC3B,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IACb,4DAAM;IACV,4DAAM;IACV,qEAAe;IACnB,4DAAM;IACV,qEAAe;;;IAxFS,0DACJ;IADI,mGACJ;IAEM,0DAAiC;IAAjC,oGAAiC;IAmB3B,2DACJ;IADI,mGACJ;IAGI,0DACJ;IADI,iHACJ;IAIyH,0DAA0C;IAA1C,0GAA0C;IAUnI,0DAAgC;IAAhC,yGAAgC;IAuBpC,0DAAqB;IAArB,8FAAqB;IAQrD,0DACJ;IADI,uGACJ;IAGI,0DAEA;IAFA,oGAEA;;;IAuCJ,0EAAsH;IAClH,uEAA2H;IAE3H,4EAA2D;IACvD,0EAAsG;IAClG,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAA8C;IAA9C,0EAA8C;IAC1C,uDACJ;IAAA,4DAAM;IACV,4DAAQ;IACZ,4DAAM;;;IAfK,0DAAkD;IAAlD,iIAAkD;IAAiB,6GAAgD;IAEnH,0DAAmD;IAAnD,kIAAmD;IACR,0DAAuD;IAAvD,qKAAuD;IASjG,0DACJ;IADI,8FACJ;;;;IAMR,wEAAuD;IACnD,6GAAuJ;IAA3F,gcAAyB;IAAkE,4DAAyC;IACpM,qEAAe;;;;IAD6B,0DAAmB;IAAnB,gFAAmB;;;;IAhDnF,wEAA4C;IACxC,2EAA0C;IACtC,0EAAiC;IAC7B,0EAA2B;IACvB,0EAAmC;IAC/B,0EAAiC;IAC7B,0EAA4C;IACxC,uDACJ;IAAA,4DAAM;IAEN,0EAAiC;IAC7B,uDACJ;IAAA,4DAAM;IACV,4DAAM;IAEN,4EAAwE;IAA1B,sXAAyB;IACnE,iFAAoK;IAAvF,wdAA2C;IAAxH,4DAAoK;IAEpK,2EAAiD;IAA/B,mcAA8B;IAC5C,8DAAK;IAAL,uEAAK;IACD,sEAA8G;IAClH,4DAAM;IACV,4DAAM;IACV,4DAAO;IACX,4DAAM;IAEN,+DAAoC;IAApC,2EAAoC;IAChC,+KAgBM;IACV,4DAAM;IAEN,2EAAqC;IACjC,iMAEe;IACnB,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;IACnB,qEAAe;;;IA/Ca,0DACJ;IADI,mGACJ;IAGI,0DACJ;IADI,iHACJ;IAIyH,0DAA0C;IAA1C,0GAA0C;IAW5I,0DAAgC;IAAhC,yGAAgC;IAoB3B,0DAAqB;IAArB,8FAAqB;;;IAhJ7E,2EAA0E;IACtE,gLA8Fe;IAEf,gLAsDe;IACnB,qEAAe;;;IAxJkB,wGAAwC;IACtD,0DAA8B;IAA9B,iGAA8B;IAgG9B,0DAA2B;IAA3B,8FAA2B;;;IAjG9C,gKAwJe;;;IAxJA,mFAAgB;;ADiC5B,MAAM,oCAAqC,SAAQ,6DAAY;IAsBlE,YAAmB,OAAoB,EACpB,KAAsB,EACrB,MAAuB,EACvB,EAAe,EACf,IAAe;QAE/B,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QANP,YAAO,GAAP,OAAO,CAAa;QACpB,UAAK,GAAL,KAAK,CAAiB;QACrB,WAAM,GAAN,MAAM,CAAiB;QACvB,OAAE,GAAF,EAAE,CAAa;QACf,SAAI,GAAJ,IAAI,CAAW;QAtBoB,eAAU,GAAuD,IAAI,CAAC;QAEpH,cAAS,GAAW,OAAO,CAAC;QAC5B,eAAU,GAAe,UAAU,CAAC;QACnC,kBAAa,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAGrE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAMjD,uBAAkB,GAAwB,EAAE,CAAC;QAC7C,iBAAY,GAAwB,EAAE,CAAC;QAWnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC5D,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;gBACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChK,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;oBACjC,IAAI,SAAS,EAAE;wBACX,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;qBACpF;gBACL,CAAC,CAAC;gBAEF,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBACtG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjF,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjI,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;YACjC,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACpF;QACL,CAAC,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,OAAuB;QACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;YACvD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAyB,CAAC;SAC5D;aAAM;YACH,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,GAAkB,EAAE,MAAc;QAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE;YACjD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACvB;IACL,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,YAAY;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,UAAU;QACd,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACjC,OAAO;SACV;QACD,yFAAyF;QACzF,IAAI,WAAW,GAAc,IAAI,qDAAS,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,WAAW,EAAE,WAAW;SAC3B,CAAC,CAAC;IACP,CAAC;IAEO,0BAA0B;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,4BAA4B;QAC5B,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,OAAO;SACV;QAED,uBAAuB;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,WAAW;QACP,sCAAsC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACjE,CAAC;IAEO,aAAa,CAAC,WAAoC;QACtD,IAAI,QAAQ,GAAmC,EAAE,CAAC;QAEjD,WAAW,CAAC,iBAAoD,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAChF,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACjH,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAc,IAAI,qDAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,aAAa,GAAc,IAAI,qDAAS,CAAC;YAC3C,EAAE,EAAE,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC;YACxE,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,aAAa,CAAC,YAAY;aACrB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;IAC5E,CAAC;IAEO,eAAe,CAAC,KAAiB;QACrC,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;IACL,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC7B,CAAC;IAEO,eAAe,CAAC,SAAiB,IAAI;QACzC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAEvD,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClL,IAAI,qBAAqB,GAAa,EAAE,CAAC;QACzC,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;YAChC,qBAAqB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;YAC3B,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;mBAClK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACtF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;gBACjB,OAAO,CAAC,CAAC;aACZ;iBAAM,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;gBACxB,OAAO,CAAC,CAAC,CAAC;aACb;iBAAM;gBACH,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aAC5B;QACL,CAAC,CAAC,CAAC;QAEH,IAAG,oBAAoB,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;IAEjG,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5H,CAAC;IAED,sBAAsB,CAAC,KAAiB;QACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAEvD,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACnK,IAAI,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7B,IAAI,KAAK,EAAE;YACP,oFAAoF;YACpF,SAAS;YACT,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;gBACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAE,EAAC,CAAC,EAAE,CAAC,CAAC;gBACtD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC/E,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;wBAC/E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBAC7D;iBACJ;gBACD,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;oBAE5B,sEAAsE;oBACtE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBAC9B,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;wBAClF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAE,EAAC,CAAC,kBAAkB,IAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;wBAEpG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAE;4BACzB,IAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAC;gCACjC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;6BACtF;wBACL,CAAC,CAAC,CAAC;qBACN;iBACJ;aACJ;iBAAM;gBACH,uCAAuC;gBACvC,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACpC,sEAAsE;oBACtE,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBACtC,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;qBAClF;iBACJ;aACJ;SACJ;QACD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACvD,4BAA4B;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEjJ,MAAM,QAAQ,GAAe,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC;QAC7G,IAAI,QAAQ,IAAI,IAAI,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAChC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC7B;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACjE,CAAC;IAEM,gBAAgB,CAAC,OAAe,EAAE,YAAoB;QACzD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1G,CAAC;IAED,uBAAuB,CAAC,OAAe;QACnC,KAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAC;YACpC,IAAI,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAE,EAAC,CAAC,EAAE,IAAI,OAAO,CAAC;YACtD,IAAG,CAAC,EAAC;gBACD,OAAO,CAAC,CAAC,WAAW,CAAC;aACxB;SACJ;QACD,OAAQ,IAAI,CAAC;IACjB,CAAC;;wHA9QQ,oCAAoC;kIAApC,oCAAoC;;;kEAI/B,kHAAuC;;;;;;;QCtCzD,4NA0Jc;;;;;;;;;;;;;;;;;;;;;;;;ACzJ+B;AACmD;AAChC;AACF;AACyC;AACzB;;AAmBvE,MAAM,iCAAiC;;kHAAjC,iCAAiC;8HAAjC,iCAAiC;kIAhBjC;YACL,yDAAY;YACZ,qFAAoB;YACpB,uDAAW;YACX,+DAAmB;YACnB,wEAAiB;SACpB;mIAUQ,iCAAiC,mBARtC,2GAAoC;QACpC,kHAAuC,aARvC,yDAAY;QACZ,qFAAoB;QACpB,uDAAW;QACX,+DAAmB;QACnB,wEAAiB,aAOjB,2GAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfrB;AACoE;AAGxB;AACtC;AAIY;;;;;;;;;;;;ICST,0EAAiC;IAC7B,wEAAmG;;IACnG,qEAA6J;IACjK,4DAAU;;;;IAFE,0DAAuE;IAAvE,+PAAuE;IAC1E,0DAA2D;IAA3D,2LAA2D;;;IAapE,0EAA2E;IACvE,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,mGACJ;;;IAtBZ,0EAAgH;IAC5G,uEAAqH;IAErH,4EAAsF;IAClF,0EAAgD;IAC5C,kKAGU;IAEV,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA6G;IACjH,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAAgD;IAAhD,0EAAgD;IAC5C,uDAEA;IAAA,4JAEM;IACV,4DAAM;IACV,4DAAQ;IACZ,4DAAM;;;IAxBK,0DAAkC;IAAlC,gHAAkC;IAAiB,wFAA4B;IAE/E,0DAAmC;IAAnC,iHAAmC;IAExB,0DAAqB;IAArB,oFAAqB;IAa/B,0DAEA;IAFA,+IAEA;IAAiD,0DAAwB;IAAxB,uFAAwB;;;;IAvCzG,2EAAmE;IAC/D,4EAAuD;IACnD,2EAAoC;IAChC,yEAA8E;IAAjC,kaAAgC;IACzE,yEAA4C;IACxC,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAAwD;IAAxD,yEAAwD;IACpD,wDACJ;IAAA,4DAAM;IACV,4DAAM;IAEN,2EAAyC;IACrC,2EAA2C;IACvC,sJAyBM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;IACnB,4DAAM;IACV,qEAAe;;;IAjDD,kGAAkC;IAa5B,2DACJ;IADI,0GACJ;IAK2B,0DAA4B;IAA5B,qGAA4B;;ADGhE,MAAM,uCAAwC,SAAQ,6DAAY;IAoBrE,YAAmB,OAAoB,EACpB,KAAsB,EACrB,MAAuB,EACvB,EAAe,EACf,IAAe;QAE/B,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QANP,YAAO,GAAP,OAAO,CAAa;QACpB,UAAK,GAAL,KAAK,CAAiB;QACrB,WAAM,GAAN,MAAM,CAAiB;QACvB,OAAE,GAAF,EAAE,CAAa;QACf,SAAI,GAAJ,IAAI,CAAW;QAnB1B,eAAU,GAAe,UAAU,CAAC;QAGnC,kBAAa,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAC3D,iBAAY,GAAqC,IAAI,uDAAY,EAAsB,CAAC;QAIlG,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAKjD,sBAAiB,GAAY,KAAK,CAAC;QAS/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACjE,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAE,EAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,SAAS,CAAC,GAAY;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAE,EAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,QAAQ;QACJ,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACtC,CAAC;IACD,eAAe;QACX,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;YAClG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,0CAA0C,CAAC,CAAC;SAC9F;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,0CAA0C,CAAC;YAC7F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SACjD;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,OAAuB;QACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;YACvD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,0CAA0C,CAAC;YAC1E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SACjD;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC;YACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SAChD;IACL,CAAC;IAEO,UAAU;QACd,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,OAAO;SACV;QACD,yFAAyF;QACzF,IAAI,KAAK,GAAc,IAAI,qDAAS,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;IACP,CAAC;IAEO,0BAA0B;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,4BAA4B;QAC5B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAG;YAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;SACV;QAED,uBAAuB;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEO,aAAa,CAAC,SAA4B;QAC9C,IAAI,QAAQ,GAAmC,EAAE,CAAC;QAEjD,SAAS,CAAC,eAA4C,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACtE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACxG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAc,IAAI,qDAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,aAAa,GAAc,IAAI,qDAAS,CAAC;YAC3C,EAAE,EAAE,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAC,CAAC;YAC1E,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEK,aAAa,CAAC,YAAY;aACrB,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEf,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;IAChE,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9G,CAAC;IAED,sBAAsB,CAAC,KAAiB;QACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAEvD,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,GAAE,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnJ,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAE3B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;YAClC,oFAAoF;YACpF,SAAS;YACT,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;gBACzC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;oBAC5B,sEAAsE;oBACtE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBAC9B,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;qBACzE;iBACJ;aACJ;iBAAM;gBACH,uCAAuC;gBACvC,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACpC,sEAAsE;oBACtE,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBACtC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;qBACjF;iBACJ;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACvD,4BAA4B;QAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;QAEjE,OAAO,IAAI,CAAC;IAChB,CAAC;IACM,iBAAiB;QACpB,MAAM,QAAQ,GAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC;QACjG,IAAI,QAAQ,IAAI,IAAI,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAChC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC7B;IACL,CAAC;IAEM,gBAAgB,CAAC,OAAe,EAAE,YAAoB;QACzD,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC9G,IAAI,OAAO,IAAI,IAAI,EAAE;gBACjB,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC7B;SACJ;IACL,CAAC;;8HAzKQ,uCAAuC;qIAAvC,uCAAuC;;;;;;QCtBpD,sJAiDe;;QAjDmC,+EAAe;;;;;;;;;;;;;;;;;;;;;;;;;ACMX;AAIb;AACZ;;;;;;;;ICQL,2EAA8D;IAAC,uDAAuB;IAAA,4DAAO;;;IAA9B,0DAAuB;IAAvB,iGAAuB;;;;IAL9F,yEAAmE;IAC/D,+EAAmL;IAAhJ,6eAAkD;IAArF,4DAAmL;IAEnL,4EAAyB;IACrB,uDACA;IAAA,8IAA6F;IACjG,4DAAQ;IACZ,4DAAM;;;;IANgB,0DAAgB;IAAhB,qFAAgB;IAAoE,kHAA+C;IAE9I,0DAAiB;IAAjB,sFAAiB;IACpB,0DACA;IADA,wFACA;IAA8B,0DAA6B;IAA7B,8FAA6B;;;;IAlB/E,yEAA+E;IAC3E,yEAA0E;IAA/C,uWAA8C;IACrE,uDAEA;IAAA,yEAAgC;IAC5B,8DAAK;IAAL,sEAAK;IACD,oEAAuH;IAC3H,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAA2B;IAA3B,yEAA2B;IACvB,yEAA0B;IACtB,qIAOM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;;;IAvBuB,4GAAiD;IAEtE,0DAEA;IAFA,2GAEA;IAS0B,0DAAQ;IAAR,iFAAQ;;ADIvC,MAAM,2BAA4B,SAAQ,6DAAY;IAczD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,MAAuB;QACvC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,WAAM,GAAN,MAAM,CAAiB;QAL3C,sBAAiB,GAAY,KAAK,CAAC;QAEnC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAM7C,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC5D,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhB,CAAC;IAEO,IAAI;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;SACV;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;aACrE;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,OAAgB;QAEpC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE3C,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACnD,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAEO,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,KAAK,GAAC,EAAE,CAAC;SACjB;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,aAAa,CAAC;aAC5C;iBAAM;gBACH,SAAS,GAAG;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,YAAY,EAAE,CAAC,CAAC,aAAa;oBAC7B,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,CAAC,CAAC,KAAK;iBACjB,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;YACD,IAAI,SAAS,CAAC,YAAY,IAAI,CAAC,EAAE;gBAC7B,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;aAC/B;iBAAM;gBACH,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IAIP,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;gBACnB,OAAO,CAAC,CAAC,CAAC;aACb;iBAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;gBAC1B,OAAO,CAAC,CAAC;aACZ;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACP,CAAC;;sGAzGQ,2BAA2B;yHAA3B,2BAA2B;;;;;;QClBxC,mNAyBc;;;;;;;;;;;;;;;;;;;;;ACpB+B;AAEF;AACkC;;AAiBtE,MAAM,wBAAwB;;gGAAxB,wBAAwB;qHAAxB,wBAAwB;yHAbxB;YACL,yDAAY;YACZ,uDAAW;SACd;mIAUQ,wBAAwB,mBAP7B,wFAA2B,aAL3B,yDAAY;QACZ,uDAAW,aAOX,wFAA2B;;;;;;;;;;;;;;;;;;;;;AChBmB;;;;;;ICA9C,wEAA+B;IACvC,uEAAqB;IACjB,uDAAa;IAAA,4DAAI;IACb,qEAAe;;;IAFpB,0DAAiB;IAAjB,0IAAiB;IAChB,0DAAa;IAAb,uFAAa;;;IAET,wEAAgC;IAE5B,uDACJ;IAAA,qEAAe;;;IADX,0DACJ;IADI,wFACJ;;;IAXJ,yEAGC;IACG,+IAGe;IACf,+IAGe;IACnB,4DAAM;;;IAXD,6IAA4E;IAG9D,0DAAc;IAAd,6EAAc;IAId,0DAAe;IAAf,8EAAe;;;IAS1B,wEAAmD;IAC/C,uDACJ;IAAA,qEAAe;;;IADX,0DACJ;IADI,iKACJ;;;IAEA,wEAAmD;IAC/C,uDACJ;IAAA,qEAAe;;;IADX,0DACJ;IADI,+JACJ;;;IAPJ,yEAA+F;IAC3F,8JAEe;IAEf,8JAEe;IACnB,4DAAM;;;IAPa,0DAAkC;IAAlC,uGAAkC;IAIlC,0DAAkC;IAAlC,uGAAkC;;;IANzD,wEAAwC;IACpC,sIAQM;IACV,qEAAe;;;IATkC,0DAAgD;IAAhD,kKAAgD;;;IAjBrG,yEAAuE;IACnE,uHAYM;IAGN,yIAUe;IACnB,4DAAM;;;IA3BD,mIAA+B;IACV,0DAA4B;IAA5B,qGAA4B;IAenC,0DAAuB;IAAvB,0FAAuB;;;IAa1C,yEAA+C;IAC3C,0EAA2C;IACvC,uDACJ;IAAA,4DAAM;IACV,4DAAM;;;IAFE,0DACJ;IADI,8GACJ;;ADjBG,MAAM,qBAAsB,SAAQ,6DAAY;IAenD,YAAmB,OAAoB,EAAS,KAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAb7D,aAAQ,GAAG,KAAK,CAAC;QAEjB,cAAS,GAAY,IAAI,CAAC;IAanC,CAAC;IAND,IAAI,SAAS;QACT,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,CAAC;IAMD,WAAW;IAEX,CAAC;IAED,WAAW,EAAC,0BAA0B;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAEO,aAAa;QACjB,IAAG,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,IAAE,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAC;YAC1E,IAAI,CAAC,WAAW,GAAC,KAAK,CAAC;YACvB,OAAO;SACV;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,8DAA8D;YAC9D,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,gEAAgE;YAChE,IAAI,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE;gBACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACnC;iBAAM;gBACH,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC7F,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;aACpC;SACJ;aAAM;YACH,mGAAmG;YACnG,sCAAsC;YACtC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACjH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE;gBACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACnC;SACJ;IACL,CAAC;;0FAtDQ,qBAAqB;mHAArB,qBAAqB;QCflC,iHA2BM;QAEN,iHAIM;;QAjC8C,iFAAiB;QA6BjD,0DAAyB;QAAzB,yFAAyB;;;;;;;;;;;;;;;;;;;;;ACxBA;AAEF;AACqB;;AAiBzD,MAAM,kBAAkB;;oFAAlB,kBAAkB;+GAAlB,kBAAkB;mHAblB;YACL,yDAAY;YACZ,uDAAW;SACd;mIAUQ,kBAAkB,mBAPvB,2EAAqB,aALrB,yDAAY;QACZ,uDAAW,aAOX,2EAAqB;;;;;;;;;;;;;;;;;;;;;;;;;ACjBsD;AAE1B;;;;;;;;AAYlD,MAAM,2BAA4B,SAAQ,6DAAY;IAmBzD,YAAmB,OAAoB,EAAE,KAAsB,EAC5C,SAAiD,EAAU,MAAa;QACvF,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACpB,cAAS,GAAT,SAAS,CAAwC;QAAU,WAAM,GAAN,MAAM,CAAO;QALlF,aAAQ,GAAW,EAAE,CAAC;IAO/B,CAAC;IAlBD,IACI,QAAQ,CAAC,KAAqC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAWD,QAAQ;IACR,CAAC;IAED,WAAW;IACX,CAAC;IAEO,iBAAiB,CAAC,KAAqC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACnB,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACtD,OAAO,GAAG,CAAC;QACf,CAAC,CAAC;IACN,CAAC;IAEO,kBAAkB,CAAC,IAAkC;QACzD,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,EAAE;YACN,IAAI,GAAG,GAAa,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;aACvB;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aACzB;YACD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACxB;YACD,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,WAAW,CAAC,KAAsB;QAC9B,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,+EAA2B,CAAC,0BAA0B,CAAC,CAAC;SAC3D;IACL,CAAC;IAED,kBAAkB;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvK,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9E;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI;QACA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,QAAQ,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;gBACjC,KAAK,CAAC,EAAE,WAAW;oBACf,MAAM,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/G,MAAM;gBACV,KAAK,CAAC,EAAE,YAAY;oBAChB,MAAM,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/G,MAAM;gBACV,KAAK,CAAC,EAAE,iBAAiB;oBACrB,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,MAAM;gBACV,KAAK,CAAC,EAAE,kBAAkB;oBACtB,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnF,MAAM;gBACV,KAAK,CAAC,EAAE,UAAU;oBACd,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvD,MAAM;gBACV,KAAK,CAAC,EAAE,WAAW;oBACf,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvD,MAAM;aACb;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;IACN,CAAC;IAED,cAAc,CAAC,IAAiC;QAC5C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;;sGA5GQ,2BAA2B;yHAA3B,2BAA2B;QClBxC,yEAA2B;QACvB,yEAAuB;QACnB,wEAAsE;QAClE,uDACJ;QAAA,4DAAK;QACL,8FAAgJ;QAAhG,qLAAiB,iBAAa,IAAC,iIAAyC,0BAAsB,IAA/D;QAAiE,4DAA2B;QAS3K,mFAAoJ;QAApC,4KAAe,uBAAmB,IAAC;QAAC,4DAAgB;QACxK,4DAAM;QACV,4DAAM;;QAbM,0DACJ;QADI,iHACJ;QAC0B,0DAAqB;QAArB,kFAAqB;QAShC,0DAA+B;QAA/B,yHAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;ACToB;AAKjC;AACZ;;;;;;;;;ICT7B,0EAA4G;;;IAArE,6EAAoB;;;IAC3D,0EAA6H;;;IAAxE,6EAAoB;;;IAGrE,wEAA+C;IAC3C,gFAAmJ;IACvJ,qEAAe;;;;IADM,0DAAmB;IAAnB,+EAAmB;;;IAF5C,yEAA6I;IACzI,wIAEe;IACnB,4DAAM;;;IAJD,uHAA8C;IAAC,oIAA2D;IACzE,0DAAW;IAAX,oFAAW;;ADiB1C,MAAM,oBAAqB,SAAQ,6DAAY;IA0BlD,YAAmB,OAAoB,EAAS,KAAsB,EAClD,MAAuB;QACvC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,WAAM,GAAN,MAAM,CAAiB;QAxBnC,cAAS,GAA2B,IAAI,CAAC;QAaxC,gBAAW,GAAW,EAAE,CAAC;QACzB,YAAO,GAAoB,SAAS;QACpC,WAAM,GAAY,KAAK,CAAC;QACxB,eAAU,GAAuB,0EAAyB,CAAC;QAKpE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAM7C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAC7C,CAAC;IA7BD,IAAa,QAAQ,CAAC,KAAwB;QAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAyBD,QAAQ;QACJ,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;aACjD;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;SAC5C;QAGD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,kBAAkB;iBACzB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBACzC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU;oBACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBACjD;qBAAM;oBACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,UAAU,GAAG,0EAAyB,CAAC;iBAC/C;YACL,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAGD,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;wFAlEQ,oBAAoB;kHAApB,oBAAoB;QCrBjC,4HAA4G;QAC5G,4HAA6H;QAE7H,gHAIM;;QAPM,yFAAyB;QACzB,0DAAuC;QAAvC,2GAAuC;QAE8D,0DAA0B;QAA1B,yHAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD9F;AACsB;AACkB;AACvB;AACZ;AAC2B;AACC;AACI;AACb;AACP;;AAuBvD,MAAM,iBAAiB;;kFAAjB,iBAAiB;8GAAjB,iBAAiB;kHApBjB;YACL,0DAAY;YACZ,qFAAoB;YACpB,6EAAgB;YAChB,+FAAsB;YACtB,4DAAW;YACX,4FAAqB;YACrB,+EAAoB;YACpB,wEAAe;SAClB;mIAWQ,iBAAiB,mBATtB,yEAAoB;QACpB,wFAA2B,aAX3B,0DAAY;QACZ,qFAAoB;QACpB,6EAAgB;QAChB,+FAAsB;QACtB,4DAAW;QACX,4FAAqB;QACrB,+EAAoB;QACpB,wEAAe,aAOf,yEAAoB;QACpB,wFAA2B;;;;;;;;;;;;;;;;;AChCnC;;;GAGG;AAMH;;GAEG;AACI,MAAM,kBAAkB;IAK3B,mBAAmB,CAAC,OAAwB;QAExC,IAAI,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,GAAG,IAAI,CAAC;SACf;QAED,IAAI,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YAClB,EAAE,GAAG,IAAI,CAAC;SACb;QAED,IAAI,KAAK,GAAmB,EAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAC,CAAC;QAEvE,IAAI,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpF,IAAI,UAAU,EAAE;YACZ,OAAO,IAAI,CAAC;SACf;QAGD,oBAAoB;QACpB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,UAAU,IAAI,WAAW,GAAG,IAAI,EAAE;YACtC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxB,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChF,WAAW,EAAE,CAAC;SACjB;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,UAA0B,EAAE,MAAqB;QACtE,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QAED,mCAAmC;QACnC,yDAAyD;QACzD,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,SAAS,IAAI,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;YACrH,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpD,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;YACxB,OAAO;SACV;QAGD,mCAAmC;QACnC,wDAAwD;QACxD,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,SAAS,IAAI,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;YACrH,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YACjD,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC;YACvB,OAAO;SACV;QAGD,yCAAyC;QACzC,4CAA4C;QAC5C,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,SAAS,IAAI,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;YACtH,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAEpD,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE;gBAClF,oCAAoC;gBACpC,+DAA+D;gBAC/D,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC;gBACrB,OAAO;aACV;YAED,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE;gBACnF,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;gBACxB,OAAO;aACV;YAED,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE;gBACnF,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC;gBACvB,OAAO;aACV;YAED,IAAI,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;YACnC,IAAI,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;YAEpC,IAAI,KAAK,GAAG,KAAK,EAAE;gBACf,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC;gBACxB,OAAO;aACV;YAED,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC;YACvB,OAAO;SACV;IACL,CAAC;IAED,IAAI,GAAG;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO,IAAI,CAAC;SACf;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,GAAG;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO,IAAI,CAAC;SACf;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAGD,MAAM,CAAC,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,MAAqB;QAChE,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,IAAI,CAAC;SACf;QAED,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,EAAE;YAC1E,OAAO,IAAI,CAAC;SACf;QAGD,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,EAAE;YAC3E,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YAC1C,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,SAAS,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACf;YACD,OAAO,KAAK,CAAC;SAChB;QAGD,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,EAAE;YAC3E,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YAC3C,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,SAAS,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACf;YACD,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,EAAE;YAC5E,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;YACvD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,SAAS,EAAE;gBAC3C,OAAO,IAAI,CAAC;aACf;YACD,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AASD,IAAY,uBAQX;AARD,WAAY,uBAAuB;IAC/B,8CAAmB;IACnB,gDAAqB;IACrB,0CAAe;IACf,sDAA2B;IAC3B,gDAAqB;IACrB,kDAAuB;IACvB,4CAAiB;AACrB,CAAC,EARW,uBAAuB,KAAvB,uBAAuB,QAQlC;;;;;;;;;;;;;;;;;;;;;;;;;;AC9KsB;AACoE;AAGxB;AACtC;AAGY;;;;;;;;;;ICLb,0EAAyE;IACrE,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,0GACJ;;;IAcA,0EAA+G;IAC3G,uEAA6H;IAE7H,4EAA+E;IAC3E,0EAAwC;IACpC,0EAAS;IAEL,qEAA0I;IAC9I,4DAAU;IACd,4DAAM;IAEN,0EAAkD;IAC9C,uDACJ;IAAA,4DAAM;IACV,4DAAQ;IACZ,4DAAM;;;;;IAdqB,0DAAmC;IAAnC,iHAAmC;IAAoC,yFAA6B;IAEjF,0DAAoC;IAApC,kHAAoC;IAI7D,0DAA8E;IAA9E,qQAA8E;IAKvF,0DACJ;IADI,iGACJ;;;;;IAtC5B,wEAA+C;IAC3C,4EAAmG;IAC/F,2EAAoC;IAChC,yEAAwB;IACpB,yEAA6D;IAAjC,ybAAgC;IACxD,yEAAqC;IACjC,uDACJ;IAAA,4DAAM;IAEN,wKAEM;IAEN,0EAA2B;IACvB,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAA2B;IAA3B,2EAA2B;IACvB,2EAAiC;IAC7B,0KAeM;IACV,4DAAM;IAEN,2EAAsD;IAClD,yEAAuG;IAAzE,iXAA6B;IACvD,wDACJ;IAAA,4DAAI;IAEJ,8EAAuE;IAA/D,gXAAuB;IAC3B,wDAEA;IAAA,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IACb,4DAAM;IACV,4DAAM;IACV,qEAAe;IACnB,4DAAM;IACV,qEAAe;;;IA5D2B,0DAA2D;IAA3D,uKAA2D;IAK7E,0DACJ;IADI,0GACJ;IAEM,0DAAiC;IAAjC,oGAAiC;IAgBmB,0DAA4B;IAA5B,qGAA4B;IAoBlF,0DACJ;IADI,uGACJ;IAGI,0DAEA;IAFA,oGAEA;;;IAoBR,0EAA+G;IAC3G,uEAA6H;IAE7H,4EAA+E;IAC3E,0EAAwC;IACpC,0EAAS;IACL,qEAA0I;IAC9I,4DAAU;IACd,4DAAM;IAEN,0EAAkD;IAC9C,uDACJ;IAAA,4DAAM;IACV,4DAAQ;IACZ,4DAAM;;;;;IAbqB,0DAAmC;IAAnC,kHAAmC;IAAoC,0FAA6B;IAEjF,0DAAoC;IAApC,mHAAoC;IAG7D,0DAA8E;IAA9E,uQAA8E;IAKvF,0DACJ;IADI,kGACJ;;;IApBxB,wEAA4C;IACxC,2EAAoC;IAChC,0EAA2C;IACvC,uDACJ;IAAA,4DAAM;IAEN,0EAAiC;IAC7B,0EAAiC;IAC7B,wKAcM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;IACnB,qEAAe;;;IAvBH,0DACJ;IADI,0GACJ;IAIkE,0DAA4B;IAA5B,qGAA4B;;;IAxE1G,2EAAwI;IACpI,2KA6De;IAEf,0KA0Be;IACnB,qEAAe;;;IA3FD,kGAAkC;IAC7B,0DAA8B;IAA9B,iGAA8B;IA+D9B,0DAA2B;IAA3B,8FAA2B;;;IAhE9C,2JA2Fe;;;IA3FmC,qKAAoF;;ADyBnI,MAAM,+BAAgC,SAAQ,6DAAY;IAmB7D,YAAmB,OAAoB,EACpB,KAAsB,EACrB,MAAuB,EACvB,EAAe,EACf,IAAe;QAE/B,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QANP,YAAO,GAAP,OAAO,CAAa;QACpB,UAAK,GAAL,KAAK,CAAiB;QACrB,WAAM,GAAN,MAAM,CAAiB;QACvB,OAAE,GAAF,EAAE,CAAa;QACf,SAAI,GAAJ,IAAI,CAAW;QAnB1B,cAAS,GAAW,IAAI,CAAC;QACzB,eAAU,GAAe,UAAU,CAAC;QACpC,uBAAkB,GAAY,KAAK,CAAC;QACnC,kBAAa,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAC3D,iBAAY,GAAyB,IAAI,uDAAY,EAAU,CAAC;QAG1E,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAe7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC5D,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;gBACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5E,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChB,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;iBAC9F;gBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACrC;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;SAC9F;QACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACtC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,OAAuB;QACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;YACvD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;SAC7D;aAAM;YACH,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1C;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEO,UAAU;QACd,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,OAAO;SACV;QAED,yFAAyF;QACzF,IAAI,KAAK,GAAc,IAAI,qDAAS,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;IACP,CAAC;IAEO,0BAA0B;QAC9B,oGAAoG;QACpG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,4BAA4B;QAC5B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBACnC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC7B;YAED,OAAO;SACV;QACD,uBAAuB;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEO,aAAa,CAAC,SAA4B;QAC9C,uFAAuF;QACvF,IAAI,QAAQ,GAAmC,EAAE,CAAC;QAEjD,SAAS,CAAC,eAA4C,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACtE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACxG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAc,IAAI,qDAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,aAAa,GAAc,IAAI,qDAAS,CAAC;YAC3C,EAAE,EAAE,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAC,CAAC;YAC1E,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,aAAa,CAAC,YAAY;aACrB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;IAChE,CAAC;IAED,WAAW;QACP,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9G,CAAC;IAED,sBAAsB,CAAC,KAAiB;QACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAEvD,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACrJ,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAE3B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;YAClC,oFAAoF;YACpF,SAAS;YACT,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;gBACzC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;oBAC5B,sEAAsE;oBACtE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBAC9B,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;qBACzE;iBACJ;aACJ;iBAAM;gBACH,wCAAwC;gBACxC,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACpC,sEAAsE;oBACtE,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBACtC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;qBACjF;iBACJ;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACvD,4BAA4B;QAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;QACjE,IAAI,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAEvD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,OAAe,EAAE,YAAoB;QACzD,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC9G,IAAI,OAAO,IAAI,IAAI,EAAE;gBACjB,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC7B;iBAAM;gBACH,mDAAmD;gBACnD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC;gBACzJ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC7B;SACJ;IACL,CAAC;IAEM,iBAAiB;QACpB,IAAI,KAAK,GAAc,IAAI,qDAAS,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3I,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEM,oBAAoB;QACvB,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;;8GAhMQ,+BAA+B;6HAA/B,+BAA+B;;;;;;QC1B5C,uNA6Fc;;;;;;;;;;;;;;;;;;;;;;;AC5F+B;AACwC;AACrB;AACF;AACgB;;AAkBvE,MAAM,4BAA4B;;wGAA5B,4BAA4B;yHAA5B,4BAA4B;6HAf5B;YACL,yDAAY;YACZ,qFAAoB;YACpB,uDAAW;YACX,+DAAmB;YACnB,wEAAiB;SACpB;mIASQ,4BAA4B,mBAPjC,gGAA+B,aAP/B,yDAAY;QACZ,qFAAoB;QACpB,uDAAW;QACX,+DAAmB;QACnB,wEAAiB,aAMjB,gGAA+B;;;;;;;;;;;;;;;;ACfhC,MAAM,wBAAwB;IAEjC,YAAoB,MAAuB,EAAU,MAAwB;QAAzD,WAAM,GAAN,MAAM,CAAiB;QAAU,WAAM,GAAN,MAAM,CAAkB;IAE7E,CAAC;IAEM,MAAM;QACT,MAAM,MAAM,GAAmB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB;aACtE,GAAG,CAAC,CAAC,CAAC,EAAE;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAE3E,MAAM,WAAW,GAAiB;gBAC9B,SAAS,EAAE,SAAS,CAAC,aAAa;gBAClC,WAAW,EAAE,SAAS,CAAC,EAAE;gBACzB,UAAU,EAAE,UAAU,CAAC,YAAY;gBACnC,YAAY,EAAE,UAAU,CAAC,EAAE;aAC9B,CAAC;YAEF,OAAO,WAAW,CAAC;QACvB,CAAC,CAAC,CAAC;QAEP,IAAI,IAAI,GAAuB,EAAE,CAAC;QAElC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACpB,IAAI,EAAE,GAAqB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;YAErE,IAAI,CAAC,EAAE,EAAE;gBACL,EAAE,GAAG;oBACD,EAAE,EAAE,IAAI,CAAC,WAAW;oBACpB,KAAK,EAAE,IAAI,CAAC,SAAS;oBACrB,MAAM,EAAE,EAAE;iBACb,CAAC;gBACF,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACjB;YACD,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,IAAI,CAAC,YAAY;gBACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1F,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAmB,EAAE,CAAmB,EAAE,EAAE;YACnD,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,CAAC;iBAC5B,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC;;gBAChC,OAAO,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ;;;;;;;;;;;;;;;;;;;;;;;;;ACvDsG;AACjD;AAIzB;AACY;AAE0B;;;;;;;;ICN3D,4EAA0I;IAA3C,ihBAA0C;IACrI,uDAEA;IAAA,yEAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,oEAA6G;IACjH,4DAAM;IACV,4DAAM;IACV,4DAAS;;;;IAPL,0DAEA;IAFA,6GAEA;;;IAJR,wEAAgD;IAC5C,6JAQS;IACb,qEAAe;;;IAToE,0DAAc;IAAd,mFAAc;;;;IAFrG,yEAA+F;IAC3F,0JAUe;IAEf,yEAAoC;IAChC,uEAA8E;IAAhD,6UAA4B;IACtD,uDACJ;IAAA,4DAAI;IACR,4DAAM;IACV,4DAAM;;;IAjB6B,0DAAe;IAAf,wFAAe;IActC,0DACJ;IADI,4GACJ;;ADED,MAAM,sCAAuC,SAAQ,6DAAY;IAWpE,YAAmB,OAAoB,EAAE,KAAsB,EAAU,MAAwB;QAC7F,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,YAAO,GAAP,OAAO,CAAa;QAAkC,WAAM,GAAN,MAAM,CAAkB;QAPvF,qBAAgB,GAAoD,IAAI,uDAAY,EAAqC,CAAC;QAC1H,wBAAmB,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAInE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAIzD,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAE1B,IAAI,CAAC,YAAY,GAAG,IAAI,8EAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAElF,IAAI,CAAC,aAAa,CAAC,kBAAkB;iBAChC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAEO,mBAAmB;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,MAAc,EAAE,OAAe;QAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;IAClD,CAAC;IAEM,gBAAgB;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;;4HAvCQ,sCAAsC;oIAAtC,sCAAsC;QClBnD,kIAkBM;;QAlB0C,iHAA6C;;;;;;;;;;;;;;;;;;;;;ACChD;AACuD;AACtB;;AAevE,MAAM,mCAAmC;;sHAAnC,mCAAmC;gIAAnC,mCAAmC;oIAZnC;YACL,yDAAY;YACZ,qFAAoB;SACvB;mIASQ,mCAAmC,mBAPxC,+GAAsC,aAJtC,yDAAY;QACZ,qFAAoB,aAMpB,+GAAsC;;;;;;;;;;;;;;;;;;ACd0D;AAC3E;;AAUtB,MAAM,wBAAwB;IAyCjC,YAAoB,KAAiB,EAAU,MAAc;QAAzC,UAAK,GAAL,KAAK,CAAY;QAAU,WAAM,GAAN,MAAM,CAAQ;QAvCpD,gBAAW,GAAkC,EAAE,CAAC;QAEjD,QAAG,GAAW,CAAC,CAAC;QAChB,QAAG,GAAW,GAAG,CAAC;QAEjB,cAAS,GAAW,CAAC,CAAC;QACtB,YAAO,GAAW,GAAG,CAAC;QAGrB,cAAS,GAA2B,IAAI,uDAAY,EAAY,CAAC;QACjE,eAAU,GAAuB,IAAI,uDAAY,EAAQ,CAAC;QAC1D,gBAAW,GAA2B,IAAI,uDAAY,EAAY,CAAC;QAGrE,YAAO,GAAY,KAAK,CAAC;QACjC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAyBjD,CAAC;IAvBD,IAAI,KAAK;QACL,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,CAAC,MAAgB;QACtB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SAC5B;IACL,CAAC;IAED,IAAI,MAAM;QACN,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,MAAM,CAAC,MAAgB;QACvB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACxB;IACL,CAAC;IAKD,QAAQ;QACJ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtC,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE;gBAC1H,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;YAED,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;gBAClH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC5D,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;gBAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;YACD,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;SACJ;IACL,CAAC;IAED,eAAe;QACX,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAC3C,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;YACtC,KAAK,EAAE,GAAG,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;oBACjB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACP,CAAC;YACD,IAAI,EAAE,CAAC,MAAW,EAAE,GAAQ,EAAE,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;oBACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;YACP,CAAC;YACD,KAAK,EAAE,CAAC,MAAW,EAAE,EAAO,EAAE,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;oBACjB,IAAI,MAAM,GAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACpC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;oBAClC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE;wBACnE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;qBAC9D;oBAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACP,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;SACjC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;gGA/HQ,wBAAwB;sHAAxB,wBAAwB;QAFtB,iEAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJH;AACwD;AAGZ;AACtC;AAGY;;;;;;;;;;ICTrC,yEAAsE;IAClE,uDACJ;IAAA,4DAAM;;;;IADF,0DACJ;IADI,8VACJ;;;IAEA,yEAAsE;IAClE,uDACJ;IAAA,4DAAM;;;;IADF,0DACJ;IADI,8VACJ;;;IAgBoB,wEAAmD;IAC/C,uDACJ;IAAA,qEAAe;;;;IADX,0DACJ;IADI,mIACJ;;;IAEA,wEAAmD;IAC/C,uDACJ;IAAA,qEAAe;;;;IADX,0DACJ;IADI,mIACJ;;;IAXZ,yEAAsG;IAClG,uEAAyF;IAEzF,4EAAwE;IACpE,0EAAkK;IAC9J,uKAEe;IAEf,uKAEe;IACnB,4DAAM;IACV,4DAAQ;IACZ,4DAAM;;;;IAbqB,0DAAmC;IAAnC,iHAAmC;IAAC,yFAA6B;IAErD,0DAAoC;IAApC,kHAAoC;IACnC,0DAAiI;IAAjI,ySAAiI;IAC9I,0DAAkC;IAAlC,qGAAkC;IAIlC,0DAAkC;IAAlC,qGAAkC;;;;IA9BzE,2EAAwI;IAIpI,8IAEM;IAEN,8IAEM;IAEN,yEAAiC;IAC7B,0FAGgE;IAD1C,sXAAkC;IAExD,4DAAuB;IAC3B,4DAAM;IACN,2EAAoC;IAChC,yEAAgC;IAC5B,8IAcM;IACV,4DAAM;IACV,qEAAe;IACnB,qEAAe;;;IAtCD,kGAAkC;IAIV,0DAAkC;IAAlC,qGAAkC;IAIlC,0DAAkC;IAAlC,qGAAkC;IAK1C,0DAAe;IAAf,wEAAe;IAQkB,0DAA0B;IAA1B,mGAA0B;;ADGlF,MAAM,mCAAoC,SAAQ,6DAAY;IAejE,YAAmB,OAAoB,EACpB,KAAsB,EACrB,MAAuB,EACvB,EAAe,EACf,MAAwB;QAExC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QANP,YAAO,GAAP,OAAO,CAAa;QACpB,UAAK,GAAL,KAAK,CAAiB;QACrB,WAAM,GAAN,MAAM,CAAiB;QACvB,OAAE,GAAF,EAAE,CAAa;QACf,WAAM,GAAN,MAAM,CAAkB;QAjBnC,cAAS,GAAW,IAAI,CAAC;QACxB,kBAAa,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAErE,6BAAwB,GAAa,EAAE,CAAC;QAExC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAiB7C,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC5D,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE;gBACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5E,IAAI,IAAI,CAAC,SAAS,EAAE;oBAChB,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;iBAC7F;gBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC3C,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;aAC1D;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/G,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnH,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACtC,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,iBAAiB,CAAC,KAAe;QAC7B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACtG;IACL,CAAC;IAED,YAAY,CAAC,KAAe;QACxB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEnG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACjF,OAAO,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACjE,OAAO,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;YAChG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE7B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACnB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SACrD;IACL,CAAC;IAEO,0BAA0B;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,4BAA4B;QAC5B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;SACV;QACD,uBAAuB;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEO,UAAU;QACd,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,OAAO;SACV;QACD,yFAAyF;QACzF,IAAI,KAAK,GAAc,IAAI,qDAAS,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;IACP,CAAC;IAEO,aAAa,CAAC,SAA4B;QAC9C,IAAI,QAAQ,GAAmC,EAAE,CAAC;QAEjD,SAAS,CAAC,eAA4C,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACtE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACxG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC,CAAC;YACnF,iFAAiF;QACrF,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAc,IAAI,qDAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,aAAa,GAAc,IAAI,qDAAS,CAAC;YAC3C,EAAE,EAAE,IAAI,uDAAW,CAAC,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAC,CAAC;YAC1E,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,aAAa,CAAC,YAAY;aACrB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;QAC5D,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;IACvD,CAAC;IAED,sBAAsB,CAAC,KAAiB;QACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAEvD,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACrJ,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAE3B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;YAClC,oFAAoF;YACpF,SAAS;YACT,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;gBACzC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;oBAC5B,sEAAsE;oBACtE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBAC9B,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;qBACzE;iBACJ;aACJ;iBAAM;gBACH,uCAAuC;gBACvC,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACpC,sEAAsE;oBACtE,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;wBACtC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;qBACjF;iBACJ;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACvD,4BAA4B;QAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;QAEjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,OAAe,EAAE,YAAoB;QACzD,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC9G,IAAI,OAAO,IAAI,IAAI,EAAE;gBACjB,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aAC7B;SACJ;IACL,CAAC;IAEM,uBAAuB,CAAC,SAAmB,IAAI,EAAE,UAAmB,IAAI;QAC3E,MAAM,QAAQ,GAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC;QACjG,IAAI,QAAQ,IAAI,IAAI,EAAE;YAClB,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,MAAM,IAAI,IAAI,EAAE;gBAChB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aACnD;YACD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjB,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;YACnD,IAAI,OAAO;gBACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SACjC;IACL,CAAC;IAEM,iBAAiB;QACpB,IAAI,KAAK,GAAc,IAAI,qDAAS,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3I,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEM,wBAAwB,CAAC,KAAa;QACzC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,iBAAiB,CAAC,GAAW;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IAChD,CAAC;;sHA5MQ,mCAAmC;iIAAnC,mCAAmC;QCxBhD,iJAsCe;;QAtCmC,4JAAoF;;;;;;;;;;;;;;;;;;;;;;;;;ACO/G;AACoE;AAI9D;AACiE;;;;;;;;;ICHtE,0EAA+D;IAC3D,uDACJ;IAAA,4DAAM;;;IADF,0DACJ;IADI,0GACJ;;;IAiBI,qEAA6D;;;;IA3BjF,wEAA+C;IAC3C,4EAAsC;IAClC,yEAAwB;IACpB,yEAA6D;IAAjC,6bAAgC;IACxD,yEAAqC;IACjC,uDACJ;IAAA,4DAAM;IAEN,4KAEM;IAEN,yEAA2B;IACvB,yEAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,+DAAgD;IAAhD,2EAAgD;IAC5C,2EAA0B;IACtB,2EAA8B;IAC1B,yGAA0I;IAAvC,saAAsC;IAAC,4DAAoC;IAE9K,+KAA6D;IAE7D,yGAAoG;IAAvC,saAAsC;IAAC,4DAAoC;IAC5I,4DAAM;IAEN,2EAAgC;IAC5B,0EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAoH;IACxH,4DAAM;IACV,4DAAM;IAEN,wDACJ;IAAA,4DAAM;IACV,4DAAM;IAEN,+DAAsD;IAAtD,2EAAsD;IAClD,yEAAuG;IAAzE,qXAA6B;IACvD,wDACJ;IAAA,4DAAI;IAEJ,8EAAuE;IAA/D,oXAAuB;IAC3B,wDAEA;IAAA,0EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAqH;IACzH,4DAAM;IACV,4DAAM;IACV,4DAAS;IACb,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAvDK,0DACJ;IADI,2GACJ;IAEM,0DAAiC;IAAjC,oGAAiC;IAiBA,0DAAqC;IAArC,oGAAqC;IAAC,yFAAyB;IAE9D,0DAAiB;IAAjB,oFAAiB;IAElB,0DAAyB;IAAzB,yFAAyB;IAU5D,0DACJ;IADI,0HACJ;IAKI,0DACJ;IADI,uGACJ;IAGI,0DAEA;IAFA,oGAEA;;;IAqBJ,qEAA6D;;;;IAV7E,wEAA4C;IACxC,0EAA2C;IACvC,uDACJ;IAAA,4DAAM;IAEN,0EAA4D;IACxD,0EAA8C;IAC1C,0EAA8B;IAC1B,wGAA0I;IAAvC,saAAsC;IAAC,4DAAoC;IAE9K,6KAA6D;IAE7D,wGAAoG;IAAvC,saAAsC;IAAC,4DAAoC;IAC5I,4DAAM;IACN,0EAAgC;IAC5B,0EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,sEAAoH;IACxH,4DAAM;IACV,4DAAM;IAEN,wDACJ;IAAA,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,qEAAe;;;IAvBP,0DACJ;IADI,2GACJ;IAK+C,0DAAqC;IAArC,oGAAqC;IAAC,yFAAyB;IAE9D,0DAAiB;IAAjB,oFAAiB;IAElB,0DAAyB;IAAzB,yFAAyB;IAS5D,0DACJ;IADI,0HACJ;;;IArFhB,wEAAiC;IAC7B,iLA4De;IAEf,gLAyBe;IACnB,qEAAe;;;IAxFI,0DAA8B;IAA9B,iGAA8B;IA8D9B,0DAA2B;IAA3B,8FAA2B;;;IA/D9C,gKAyFe;;;IAzFA,mFAAgB;;ADuB5B,MAAM,oCAAqC,SAAQ,6DAAY;IA8ClE,YAAmB,OAAoB,EAAS,KAAsB,EAClD,IAAe,EAAU,MAAuB;QAEhE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAHP,YAAO,GAAP,OAAO,CAAa;QAAS,UAAK,GAAL,KAAK,CAAiB;QAClD,SAAI,GAAJ,IAAI,CAAW;QAAU,WAAM,GAAN,MAAM,CAAiB;QA5CjB,eAAU,GAAmD,IAAI,CAAC;QAE5G,eAAU,GAAe,UAAU,CAAC;QAEnC,kBAAa,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAErE,gBAAW,GAAW,eAAe,CAAC,CAAC,YAAY;QACnD,gBAAW,GAAW,eAAe,CAAC,CAAC,SAAS;QAgChD,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAQjD,CAAC;IArCD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,qBAAqB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM;cACtG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IAChH,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;IAC5C,CAAC;IAYD,QAAQ;IACR,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,OAAuB;QACjC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;YACvD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAyB,CAAC;SAC5D;aAAM;YACH,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC7B,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACjE,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACjE,CAAC;IAEM,gBAAgB,CAAC,OAAe,EAAE,YAAoB;QACzD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5E,CAAC;;wHAtFQ,oCAAoC;kIAApC,oCAAoC;;kEAG/B,yGAAmC;;;;;;QC3BrD,4NA2Fc;;;;;;;;;;;;;;;;;;;;;;;;AC1F+B;AACmD;AAC7C;AACmB;AACwB;AAChB;;AAmBvE,MAAM,iCAAiC;;kHAAjC,iCAAiC;8HAAjC,iCAAiC;kIAhBjC;YACL,yDAAY;YACZ,qFAAoB;YACpB,+DAAmB;SACtB;mIAYQ,iCAAiC,mBAVtC,2GAAoC;QACpC,iFAAwB;QACxB,yGAAmC,aAPnC,yDAAY;QACZ,qFAAoB;QACpB,+DAAmB,aAQnB,2GAAoC;QACpC,iFAAwB;;;;;;;;;;;;;;;;;ACNzB,MAAM,8BAA8B;CAW1C;AACM,MAAM,mBAAoB,SAAQ,8BAA8B;IAEnE,YAAY,IAAoC;QAC5C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,IAAW,QAAQ;QAEf,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YACzE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;IAED,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE;YAC3B,OAAO;SACV;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACzD;IACL,CAAC;CAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DgE;AACjB;AACQ;AACoB;AAC9B;AAGwC;AAE7B;AACmC;;AAOrF,MAAM,sCAAsC;IAyF/C,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QApF9B,uBAAkB,GAAW,IAAI,CAAC;QAG1C,kBAAa,GAAiB,IAAI,yCAAO,EAAE,CAAC;QAsG5C,iBAAY,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAC1D,sBAAiB,GAAyB,IAAI,iDAAe,CAAM,IAAI,CAAC,CAAC;QACzE,uBAAkB,GAAsB,IAAI,uDAAY,EAAO,CAAC;QArB5D,IAAI,CAAC,IAAI,GAAe,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4DAAU,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,+DAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAA0B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mFAAqB,CAAC,CAAC;QAC1F,oEAAoE;QAEpE,IAAI,CAAC,cAAc,GAAG;YAClB,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAC;YAC9E,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAC;YAChF,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAC;YAChF,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,0BAA0B,EAAC;YAClF,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAC;YAC5E,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAC;YAC9E,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAC;YAC9E,EAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAC;SACnF,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAhGD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,IAAI,aAAa,CAAC,KAAa;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;IACtC,CAAC;IAGD,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,YAAY,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,KAAY;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;IACvC,CAAC;IAED,IAAI,eAAe,CAAC,KAAqB;QACrC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;IACxC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,CAAC;IA6BD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAQD,IAAI,QAAQ;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAOD,IAAI,SAAS,CAAC,KAAmC;QAC7C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAEO,IAAI;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,wEAAuB,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEO,YAAY;QAChB,OAAO,IAAI,4DAAmB,CAAC;YAC3B,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YAChC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACvC,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,KAAK;YACrB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;YACvC,SAAS,EAAE,CAAC,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC;SAC3B,CAAC,CAAC;IACP,CAAC;IAED,iBAAiB;QAEb,IAAI,cAAc,GAAmB;YACjC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;aACpC;YACD,WAAW,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACxD,gBAAgB,EAAE,IAAI,CAAC,WAAW;SACrC,CAAC;QAEF,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,oBAAoB,CAAC,QAAiB,KAAK;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrC,IAAI,oBAAoB,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE1E,IAAI,oBAAoB,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,EAAE;YAC3D,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;SACV;QACD,IAAI,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAA4B,sCAAsC,oBAAoB,EAAE,CAAC;aACjG,IAAI,CACD,oDAAI,CAAC,CAAC,CAAC,EACP,wDAAQ,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,EACF,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACjC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACX,CAAC;IAGO,QAAQ,CAAC,UAAqC;QAClD,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,oCAAmC;YAC3E,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC5C;aAAM;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;IACL,CAAC;IAED,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACjD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAC1C,CAAC;IAED,aAAa,CAAC,OAAsB;QAChC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5D,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC1B;aAAM,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAChC;aAAM;YACH,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC;IAC7C,CAAC;IAED,IAAI,WAAW,CAAC,WAAoC;QAChD,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;IACzC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,UAAkB,EAAE,WAAmB;QAE9C,IAAI,CAAC,WAAW,GAAG,IAAI,wEAAuB,CAAC,gHAA+D,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACzJ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;;4HA5QQ,sCAAsC;uIAAtC,sCAAsC,WAAtC,sCAAsC;;;;;;;;;;;;;;;;ACVnD,IAAY,cAQX;AARD,WAAY,cAAc;IACtB,qDAAS;IACT,+CAAM;IACN,+CAAM;IACN,+CAAM;IACN,6DAAa;IACb,mDAAQ;AAEZ,CAAC,EARW,cAAc,KAAd,cAAc,QAQzB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfuF;AACL;AAK1C;AACZ;;;;;;;;;;;ICiCT,qEAAmI;;;;IACnI,qEAAyI;;;;IAzC7J,yEAAsD;IAClD,yEAA8D;IAC1D,yEAAoC;IAChC,yEAA2C;IACvC,oEAAoI;IACxI,4DAAM;IAEN,yEAA6C;IACzC,yEAA+F;IAA3B,qUAA0B;IAC1F,uDACJ;IAAA,4DAAM;IACN,yEAAoD;IAChD,uDACJ;IAAA,4DAAM;IACV,4DAAM;IACV,4DAAM;IACV,4DAAM;IAEN,0EAA6D;IACzD,wDACJ;IAAA,4DAAM;IAEN,sEAAyG;IAEzG,2EAAkE;IAC9D,wDACJ;IAAA,4DAAM;IAEN,2EAAuL;IACnL,wDACJ;IAAA,4DAAM;IAEN,2EAA6D;IACzD,yFAAsF;;IAC1F,4DAAM;IAEN,2EAA8D;IAC1D,8EAA4L;IAA1D,8ZAAuC;IACrK,2EAAkB;IACd,8DAAK;IAAL,uEAAK;IACD,yIAAmI;IACnI,yIAAyI;IAC7I,4DAAM;IACV,4DAAM;IACV,4DAAS;IACb,4DAAM;IACV,4DAAM;;;;IA1Ce,0DAA4E;IAA5E,gNAA4E;IAK7E,0DACJ;IADI,0GACJ;IAEI,0DACJ;IADI,uGACJ;IAMR,0DACJ;IADI,kHACJ;IAE2D,0DAAuC;IAAvC,mKAAuC;IAG9F,0DACJ;IADI,2GACJ;IAE8D,0DAAwH;IAAxH,iSAAwH;IAClL,0DACJ;IADI,uJACJ;IAGgC,0DAAoC;IAApC,gJAAoC;IAIxD,0DAAmD;IAAnD,gHAAmD;IAGzC,0DAAmB;IAAnB,sFAAmB;IACnB,0DAAkB;IAAlB,qFAAkB;;ADvBrC,MAAM,+BAAgC,SAAQ,6DAAY;IAoB7D,YAAY,OAAoB,EAAE,KAAsB,EACpC,KAAsB;QACtC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADN,UAAK,GAAL,KAAK,CAAiB;QARhC,iBAAY,GAA8C,IAAI,uDAAY,EAA+B,CAAC;QAK5G,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAMrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACjE,CAAC;IAtBD,IACI,IAAI,CAAC,KAAkC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAgBD,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAGO,yBAAyB,CAAC,IAAiC;QAC/D,IAAI,IAAI,EAAE;YAEN,IAAI,CAAC,YAAY,GAAG;gBAChB,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC;SACL;IACL,CAAC;IAED,IAAY,kBAAkB;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,GAAG,GAAa,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACnF,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aAC7E;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC9B;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAClB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aAC7B;YACD,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,GAAG,GAAyB;gBAC9B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;gBACtC,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;aAC3C,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC;iBAC5B,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACrC,CAAC,EAAE,GAAG,EAAE;gBACJ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACrC,CAAC,CAAC;SACT;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;iBACnF,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACnC,SAAS,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACrC,CAAC,EAAE,GAAG,EAAE;gBACJ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACrC,CAAC,CAAC;SACT;IACL,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC9F,CAAC;IAED,cAAc;QACV,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;;8GA/GQ,+BAA+B;6HAA/B,+BAA+B;QClB5C,6HA8CM;;QA9C4B,kFAAkB;;;;;;;;;;;;;;;;;;;;;;;;ACAiB;AACc;;;;;;;;;ICyDvE,oGAAgH;IAAxC,gaAAuC;IAAC,4DAAgC;;;IAAtF,yEAAa;;;IAD3E,wEAAwC;IACpC,4LAAgJ;IACpJ,qEAAe;;;IADqC,0DAAQ;IAAR,iFAAQ;;;IAG5D,2EAAkI;;;IAArE,6EAAoB;;;IACjF,2EAAqH;;IAA1G,6EAAoB;;;ADlDhC,MAAM,2BAA4B,SAAQ,6DAAY;IAgBzD,YAAY,OAAoB,EAAE,KAAsB;QACpD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAZhB,kBAAa,GAAyB,IAAI,uDAAY,EAAU,CAAC;QACjE,iBAAY,GAA8C,IAAI,uDAAY,EAA+B,CAAC;IAYpH,CAAC;IAVD,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;IACvC,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;IACxC,CAAC;IAMD,WAAW,CAAC,OAAe;QACvB,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;SAC5B;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,IAAiC;QAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;;sGA/BQ,2BAA2B;yHAA3B,2BAA2B;QCZxC,yEAA4B;QACxB,yEAAkC;QAC9B,yEAAiC;QAC7B,yEAA0F;QACtF,uDACJ;QAAA,4DAAM;QAEN,yEAAmM;QAAzB,gJAAS,gBAAY,CAAC,CAAC,IAAC;QAC9L,uDAEA;QAAA,yEAAkC;QAC9B,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,qEAA4G;QAChH,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAAiM;QAAjM,0EAAiM;QAAzB,iJAAS,gBAAY,CAAC,CAAC,IAAC;QAC5L,wDAEA;QAAA,0EAAkC;QAC9B,0EAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,qEAA4G;QAChH,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAAwM;QAAxM,0EAAwM;QAAzB,iJAAS,gBAAY,CAAC,CAAC,IAAC;QACnM,wDAEA;QAAA,0EAAkC;QAC9B,0EAAkB;QACd,8DAAK;QAAL,uEAAK;QACD,qEAA4G;QAChH,4DAAM;QACV,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAA8D;QAA9D,2EAA8D;QAC1D,wDACJ;QAAA,4DAAM;QAEN,2EAA6D;QACzD,wDACJ;QAAA,4DAAM;QAEN,sEACM;QACV,4DAAM;QACV,4DAAM;QAEN,2EAAkC;QAC9B,4IAEe;QAEf,sIAAkI;QAClI,sIAAqH;QACzH,4DAAM;QACV,4DAAM;;QA5DU,0DACJ;QADI,6GACJ;QAE2F,0DAA8E;QAA9E,qLAA8E;QACrK,0DAEA;QAFA,8GAEA;QASqF,0DAA8E;QAA9E,qLAA8E;QACnK,0DAEA;QAFA,6GAEA;QAS4F,0DAA8E;QAA9E,qLAA8E;QAC1K,0DAEA;QAFA,4GAEA;QAUA,0DACJ;QADI,gHACJ;QAGI,0DACJ;QADI,+GACJ;QAQW,0DAAuB;QAAvB,mHAAuB;QAI1B,0DAA+C;QAA/C,iJAA+C;QACJ,0DAAgD;QAAhD,kJAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9D9B;AACE;AAG1C;AACZ;AAE4B;;;;;;;AAYlD,MAAM,wBAAyB,SAAQ,6DAAY;IAWtD,YAAY,OAAoB,EAAE,KAAsB,EACrC,SAAiD;QAChE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADP,cAAS,GAAT,SAAS,CAAwC;QAV1D,iBAAY,GAA8C,IAAI,uDAAY,EAA+B,CAAC;QACpH,cAAS,GAAW,CAAC,CAAC;QAEtB,eAAU,GAAW,CAAC,CAAC;QAEvB,oBAAe,GAAkC,IAAI,CAAC;QAEtD,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAM7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,SAAS,CAAC,kBAAkB;aAC5B,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;gBACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC;gBAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC;aAC9D;iBAAM;gBACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;aACvB;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,WAAW,CAAC,KAAsB;QAC9B,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAE1C,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;SACnB;IACL,CAAC;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAE9C,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAEO,QAAQ;QACZ,qFAAiC,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,IAAiC;QAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;;gGAtDQ,wBAAwB;sHAAxB,wBAAwB;QCnBrC,yEAA6B;QACzB,yEAAuB;QACnB,8FAAoJ;QAAxE,kLAAiB,iBAAa,IAAC,8HAAiB,0BAAsB,IAAvC;QAAyC,4DAA2B;QAS/K,mFAA8I;QAApC,yKAAe,uBAAmB,IAAC;QAAC,4DAAgB;QAClK,4DAAM;QACV,4DAAM;;QAX4B,0DAAyB;QAAzB,sFAAyB;QASpC,0DAAc;QAAd,uEAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVQ;AACgC;AAC3B;AACoB;AACD;AACH;AACoB;AACnC;AACyB;AACE;AAC0D;AAC1E;;AA4BvD,MAAM,qBAAqB;;0FAArB,qBAAqB;mHAArB,qBAAqB;wHANpB;QACN,yEAAgB;QAChB,kJAAsC;KACzC,YAtBQ;YACL,0DAAY;YACZ,qFAAoB;YACpB,4DAAW;YACX,+EAAoB;YACpB,gEAAmB;YACnB,sFAAmB;YACnB,wEAAe;SAClB;oIAiBQ,qBAAqB,mBAf1B,iFAAwB;QACxB,wFAA2B;QAC3B,iGAA+B,aAX/B,0DAAY;QACZ,qFAAoB;QACpB,4DAAW;QACX,+EAAoB;QACpB,gEAAmB;QACnB,sFAAmB;QACnB,wEAAe,aAQf,iFAAwB;QACxB,wFAA2B;QAC3B,iGAA+B;;;;;;;;;;;;;;;;;;;;;;AC/BqC;;;;;;;;;ICG5D,uEAAiI;IAAtC,ySAAS,4BAAqB,KAAK,CAAC,IAAC;IAC5H,uDACJ;IAAA,4DAAI;;;IAFqB,8JAA6B;IAClD,0DACJ;IADI,0FACJ;;;;IAEA,uEAA6J;IAAzE,ySAAS,4BAAqB,KAAK,CAAC,IAAC;IACrH,uDACJ;IAAA,4DAAI;;;IAFoB,yJAAuB;IAA0F,4EAAmB;IACxJ,0DACJ;IADI,0FACJ;;;IAPJ,yEAAwE;IACpE,yHAEI;IAEJ,yHAEI;IACR,4DAAM;;;IAPE,0DAAmB;IAAnB,kFAAmB;IAInB,0DAAkB;IAAlB,iFAAkB;;ADM/B,MAAM,2BAA4B,SAAQ,6DAAY;IAOzD,YAAY,OAAoB,EAAE,KAAsB;QACpD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QANjB,aAAQ,GAAgC,IAAI,CAAC;QAC7C,gBAAW,GAAsB,IAAI,CAAC;QACtC,aAAQ,GAAW,CAAC,CAAC;QAC9B,cAAS,GAAoB,IAAI,CAAC;IAIlC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE;YAC3E,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;IACL,CAAC;IAED,IAAI;QACA,IAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAC;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,EAAE;gBACpC,OAAO;oBACH,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,KAAK,EAAE,CAAC,CAAC,IAAI;oBACb,MAAM,EAAE,IAAI;iBACf;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,IAAI,CAAC,QAAQ,CAAC;SAC5B;aAAK,IAAG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,EAAC;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,EAAE;gBACvC,OAAO;oBACH,MAAM,EAAE,CAAC,CAAC,GAAG;oBACb,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,KAAK,EAAE,CAAC,CAAC,IAAI;iBAChB;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,IAAI,CAAC,QAAQ,CAAC;SAC5B;;YACG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAE9B,CAAC;;sGAzCQ,2BAA2B;yHAA3B,2BAA2B;QCdxC,wEAAc;QACV,yEAAkC;QAC9B,yEAAsC;QAClC,uHAQM;QACV,4DAAM;QACV,4DAAM;QACV,qEAAe;;QAXoB,0DAAY;QAAZ,kFAAY;;;;;;;;;;;;;;;;;;;;;ACFF;AACgC;AAChC;;AAetC,MAAM,wBAAwB;;gGAAxB,wBAAwB;qHAAxB,wBAAwB;yHAZxB;YACL,yDAAY;YACZ,yDAAY;SACf;mIASQ,wBAAwB,mBAP7B,wFAA2B,aAJ3B,yDAAY;QACZ,yDAAY,aAMZ,wFAA2B;;;;;;;;;;;;;;;;;;;;;;;ACJ5B,MAAM,uBAAuB;IAMhC,YACY,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;QAH7B,aAAQ,GAAY,KAAK,CAAC;IAK1B,CAAC;IAED,QAAQ;IACR,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;aACI;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;IACL,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;IACL,CAAC;IAED,KAAK;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAGD,UAAU,CAAC,EAAO;QACd,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;;8FAzCQ,uBAAuB;qHAAvB,uBAAuB;qJAAvB,sBAAkB;;;QCV/B,yEAAuG;QACnG,yEAAkD;QAAnB,4IAAS,YAAQ,IAAC;QAC7C,uEAAM;QACF,6DAA2C;QAC/C,4DAAO;QAEP,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAAkH;QACtH,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAA+B;QAA/B,yEAA+B;QAC3B,gEAA4C;QAChD,4DAAM;QAmBV,4DAAM;;QAlCkB,sKAA8E;;;;;;;;;;;;;;;;;;;;;;;ACY/E;AAEgD;AACd;;;;;;ICdrD,yEAA2B;IACvB,2EAA8D;IAE9D,4EAAkB;IACd,uDACJ;IAAA,4DAAQ;IACZ,4DAAM;;;;;;IALyB,0DAAkC;IAAlC,qGAAkC;IAEtD,0DAAU;IAAV,oEAAU;IACb,0DACJ;IADI,mFACJ;;;IA2BY,mEAA+K;;;;;;IAPvL,wEAA2D;IACvD,0EAIkB;IAHb,sYAA0B;IAK3B,sJAA+K;IAEnL,4DAAM;IACV,qEAAe;;;;;IAPN,0DAAoH;IAApH,qMAAoH;IAItG,0DAAyD;IAAzD,qHAAyD;;;ADCrF,MAAM,uBAA8B,SAAQ,6DAAY;IAc3D,YAAY,OAAoB,EAAE,KAAsB,EAAU,KAAiB;QAC/E,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADwC,UAAK,GAAL,KAAK,CAAY;QAZxD,aAAQ,GAAqB,IAAI,CAAC;QAEpD,UAAK,GAAgC,IAAI,CAAC;QAEzC,WAAM,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAE9D,aAAQ,GAAY,KAAK,CAAC;QAC1B,eAAU,GAAY,KAAK,CAAC;QAC5B,mBAAc,GAAQ,EAAE,CAAC;QAEjB,mBAAc,GAAqB,IAAI,CAAC;IAIhD,CAAC;IAED,QAAQ;IACR,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;aAAM;YACH,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;IACL,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,UAAU;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,eAAe,CAAC,GAAM;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,SAAS,CAAC;IACjE,CAAC;IAED,UAAU,CAAC,IAA+B;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;gBACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACtC;iBAAM;gBACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAEzC;IACL,CAAC;IAGM,UAAU,CAAC,EAAO;QACrB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;IACjF,CAAC;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,iBAAiB,CAAC,GAAQ;IAC1B,CAAC;IAED,gBAAgB,CAAC,UAAmB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,KAAK,IAAI,IAAI;YAAE,IAAI,CAAC,cAAc,GAAG,KAAK;IAClD,CAAC;IAED,QAAQ,CAAC,KAAoB,EAAE,QAAqC,EAAE,GAAG,QAAe;QACpF,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,EAAE;YACtB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAClC;IACL,CAAC;;8FA1FQ,uBAAuB;qHAAvB,uBAAuB;+EAElB,sDAAW;;;;;qJAFhB,sBAAkB;gKARhB;YACP;gBACI,OAAO,EAAE,6DAAiB;gBAC1B,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC;gBACtD,KAAK,EAAE,IAAI;aACd;SACJ;QChCL,+MAQc;QAEd,yEAAyG;QACrG,yEAAqG;QAAtE,4IAAS,YAAQ,IAAC,gGAA0B,gCAAwB,IAAlD;QAC7C,0EAAwB;QACpB,uDACJ;QAAA,4DAAO;QAEP,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAAqH;QACzH,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAAkC;QAAlC,yEAAkC;QAC9B,0EAA8B;QAE1B,wIAUe;QAEnB,4DAAM;QACV,4DAAM;QACV,4DAAM;;QA9BkB,0DAAgF;QAAhF,wKAAgF;QAG5F,0DACJ;QADI,qFACJ;QAYmC,0DAAU;QAAV,8EAAU;;;;;;;;;;;;;;;;;;;;;;;ACzBR;AACwB;AACL;AACwB;AACF;;AAmB/E,MAAM,eAAe;;8EAAf,eAAe;4GAAf,eAAe;gHAXf;YACL,yDAAY;YACZ,uDAAW;YACX,+DAAmB;SACtB;mIAOQ,eAAe,mBAfpB,gFAAkB;QAClB,iGAAuB;QACvB,iGAAuB,aAGvB,yDAAY;QACZ,uDAAW;QACX,+DAAmB,aAGnB,gFAAkB;QAClB,iGAAuB;QACvB,iGAAuB;;;;;;;;;;;;;;;;;;;;;;ACTR;AAEgD;AACd;;;;;;ICdrD,uDACJ;;;IADI,qFACJ;;;IAOoB,mEAA6I;;;;IAFrJ,wEAAmD;IAC/C,0EAAwB;IACpB,8JAA6I;IACjJ,4DAAO;IACX,qEAAe;;;;;IAFQ,0DAAyD;IAAzD,qHAAyD;;;IAHpF,wEAA2D;IACvD,+IAIe;IACnB,qEAAe;;;;IALI,0DAAkC;IAAlC,wGAAkC;;;IAQjD,0EAA4C;IAAA,uDAAe;IAAA,4DAAO;;;IAAtB,0DAAe;IAAf,oFAAe;;;IAC3D,uEAA2B;IAAA,uDAA4B;IAAA,4DAAO;;;IAAnC,0DAA4B;IAA5B,iGAA4B;;;IAF3D,wEAAuC;IACnC,gIAAkE;IAClE,+HAA8D;IAClE,qEAAe;;;IAFc,0DAAiB;IAAjB,oFAAiB;IACnC,0DAAkB;IAAlB,qFAAkB;;;IAiBzB,mEAA6I;;;;;IANjJ,0EAKkB;IAHb,kYAA0B;IAI3B,4IAA6I;IACjJ,4DAAM;;;;;IAJD,qOAAsH;IAGxG,0DAAyD;IAAzD,uHAAyD;;;;IAPhF,+DAAgD;IAAhD,0EAAgD;IAC5C,qHAOM;IACV,4DAAM;;;IAPoB,0DAAU;IAAV,iFAAU;;;ADMjC,MAAM,kBAAyB,SAAQ,6DAAY;IAatD,YAAY,OAAoB,EAAE,KAAsB,EAAU,KAAiB;QAC/E,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADwC,UAAK,GAAL,KAAK,CAAY;QAXxD,aAAQ,GAAqB,IAAI,CAAC;QACpD,UAAK,GAAgC,IAAI,CAAC;QACzC,WAAM,GAAoB,IAAI,uDAAY,EAAK,CAAC;QAG1D,aAAQ,GAAY,KAAK,CAAC;QAC1B,eAAU,GAAY,KAAK,CAAC;QAC5B,kBAAa,GAAM,IAAI,CAAC;QAEhB,mBAAc,GAAqB,IAAI,CAAC;IAIhD,CAAC;IAED,QAAQ;IACR,CAAC;IAED,MAAM;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;aACI;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;SACf;IACL,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,UAAU;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,IAA+B;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACxC;IACL,CAAC;IAGM,UAAU,CAAC,EAAO;QACrB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;IACL,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;IAC1E,CAAC;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,iBAAiB,CAAC,GAAQ;IAC1B,CAAC;IAED,gBAAgB,CAAC,UAAmB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,UAAU,CAAC,KAAU;QACjB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,QAAQ,CAAC,KAAoB,EAAE,QAAqC,EAAE,GAAG,QAAe;QACpF,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,EAAE;YACtB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAClC;IACL,CAAC;;oFAhFQ,kBAAkB;gHAAlB,kBAAkB;+EAEb,sDAAW;;;;;gJAFhB,sBAAkB;4KARhB;YACP;gBACI,OAAO,EAAE,6DAAiB;gBAC1B,WAAW,EAAE,yDAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC;gBACjD,KAAK,EAAE,IAAI;aACd;SACJ;QChCL,0MAEc;QAEd,yEAAyG;QACrG,yEAAqG;QAAtE,uIAAS,YAAQ,IAAC,2FAA0B,gCAAwB,IAAlD;QAC7C,gIAMe;QAEf,gIAGe;QAEf,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAAqH;QACzH,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,8GASM;QAEV,4DAAM;;QAjCkB,0DAAgF;QAAhF,wKAAgF;QAEjE,0DAAU;QAAV,8EAAU;QAQ1B,0DAAsB;QAAtB,sFAAsB;QAYT,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;;ACzBI;AACzB;AAIY;;;;;;;ICLrC,wEAAoJ;IAChJ,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA+G;IACnH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANsD,8KAAqB;;;;IAO/E,wEAAoL;IAA5B,oUAA2B;IAC/K,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA+G;IACnH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IAEJ,wEAAqH;IACjH,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAgH;IACpH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANqB,+KAAsB;;;IAQ/C,wEAAyG;IACrG,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA4G;IAChH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANiB,2KAAkB;;;IAQvC,wEAA+G;IAC3G,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAA8G;IAClH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANmB,6KAAoB;;;IAU3C,wEAAwH;IACpH,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAiH;IACrH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANsB,gLAAuB;;;IAQjD,wEAAqH;IACjH,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAgH;IACpH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANqB,+KAAsB;;;IAQ/C,wEAA2H;IACvH,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAkH;IACtH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANuB,iLAAwB;;;IAQnD,wEAAwH;IACpH,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAiH;IACrH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IANsB,gLAAuB;;;IAQjD,wEAA2H;IACvH,0EAAkB;IACd,8DAAK;IAAL,sEAAK;IACD,qEAAkH;IACtH,4DAAM;IACV,4DAAM;IACV,4DAAI;;;IAND,mLAAwB;;;IA1E/B,yEAA+I;IAC3I,qHAMI;IACJ,qHAMI;IAEJ,qHAMI;IAEJ,qHAMI;IAEJ,qHAMI;IAIJ,qHAMI;IAEJ,qHAMI;IAEJ,qHAMI;IAEJ,sHAMI;IAEJ,wHAMI;IACR,4DAAM;;;IAhFE,0DAAoD;IAApD,mMAAoD;IAOpD,0DAAoD;IAApD,mMAAoD;IAQpD,0DAAmB;IAAnB,kHAAmB;IAQnB,0DAAe;IAAf,8GAAe;IAQf,0DAAiB;IAAjB,gHAAiB;IAUjB,0DAAoB;IAApB,mHAAoB;IAQpB,0DAAmB;IAAnB,kHAAmB;IAQnB,0DAAqB;IAArB,oHAAqB;IAQrB,0DAAoB;IAApB,mHAAoB;IAQ4E,0DAAqB;IAArB,oHAAqB;;AD1DtH,MAAM,uBAAwB,SAAQ,6DAAY;IAQrD,YAAY,OAAoB,EAAS,KAAsB,EAC3C,IAAgB;QAChC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFe,UAAK,GAAL,KAAK,CAAiB;QAC3C,SAAI,GAAJ,IAAI,CAAY;QAHpC,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAK7C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,qBAAqB,CAAC;aAC/C,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC,CAAC;IACX,CAAC;IAED,eAAe;QACX,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,0BAA0B,EAAC,QAAQ,EAAC,sFAAsF,CAAC;IAClK,CAAC;;8FA5BQ,uBAAuB;qHAAvB,uBAAuB;QChBpC,qHAiFM;;QAjFgB,4YAAuH;;;;;;;;;;;;;;;;;;;;ACChG;AACuB;;AAS7D,MAAM,oBAAoB;;wFAApB,oBAAoB;iHAApB,oBAAoB;qHALpB,CAAC,yDAAY,CAAC;mIAKd,oBAAoB,mBAJd,+EAAuB,aAD5B,yDAAY,aAEZ,+EAAuB;;;;;;;;;;;;;;;;;;;;;;;;;ACPiB;AACzB;AAIY;;;;;;;;ICNzC,yEAA4C;IAC1C,oEAAoE;IACtE,4DAAM;;;IADwB,0DAAiC;IAAjC,6LAAiC;;ADgBxD,MAAM,wBAAyB,SAAQ,6DAAY;IAOtD,YAAY,OAAoB,EAAS,KAAsB,EAC3C,IAAgB,EAAU,SAAuB;QACjE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFe,UAAK,GAAL,KAAK,CAAiB;QAC3C,SAAI,GAAJ,IAAI,CAAY;QAAU,cAAS,GAAT,SAAS,CAAc;QAHrE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAKjD,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,uBAAuB,CAAC;aAClD,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,UAAU,CAAC,GAAoB;QACnC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO;YAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACpG,OAAO,GAAG,CAAC;IACf,CAAC;;gGA3BQ,wBAAwB;sHAAxB,wBAAwB;QCjBrC,oHAEM;;QAFiB,4GAAmB;;;;;;;;;;;;;;;;;;;;ACCG;AACyB;;AAS/D,MAAM,qBAAqB;;0FAArB,qBAAqB;kHAArB,qBAAqB;sHALrB,CAAC,yDAAY,CAAC;mIAKd,qBAAqB,mBAJf,iFAAwB,aAD7B,yDAAY,aAEZ,iFAAwB;;;;;;;;;;;;;;;;;;;ACD4D;;AAE3F,SAAS,gBAAgB,CAAC,WAAmB;IAEhD,OAAO,CAAC,OAAwB,EAA0B,EAAE;QACxD,MAAM,IAAI,GAAW,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,IAAI,EAAE,GAAY,IAAI,KAAK,WAAW,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,EAAC,IAAI,EAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC,CAAC;AACN,CAAC;AAOM,MAAM,yBAAyB;IALtC;QAQY,UAAK,GAAG,oEAAwB,CAAC;KAgB5C;IAdG,WAAW,CAAC,OAAsB;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE;YACR,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACtC;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,oEAAwB,CAAC;SACzC;IACL,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;;kGAjBQ,yBAAyB;uHAAzB,yBAAyB,gJAHvB,CAAC,EAAC,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;ACbI;;AAElG;;;;GAIG;AACI,SAAS,SAAS,CAAC,CAAS;IAC/B,IAAI;QACA,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACX,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,IAAI,EAAE;YAAE,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;KACzC;IACD,OAAO,CAAC,EAAE;QACN,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAEM,SAAS,YAAY,CAAC,OAAe;IAExC,OAAO,CAAC,OAAwB,EAA0B,EAAE;QACxD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAC,CAAC,IAAI,CAAC;QACpE,IAAI,EAAW,CAAC;QAChB,QAAQ,OAAO,EAAE;YACb,KAAK,OAAO;gBACR,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,EAAC,GAAG,EAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C;gBACI,OAAO,IAAI,CAAC;SACnB;IACL,CAAC,CAAC;AACN,CAAC;AAOM,MAAM,qBAAqB;IALlC;QAQY,UAAK,GAAG,oEAAwB,CAAC;KAe5C;IAbG,WAAW,CAAC,OAAsB;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE;YACR,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;SAClC;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,oEAAwB,CAAC;SACzC;IACL,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;;0FAjBQ,qBAAqB;mHAArB,qBAAqB,sJAHnB,CAAC,EAAC,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;;;;;;;;;;;;;;;;;;AC3CnF,MAAM,gBAAgB;IAIzB,IAAI,OAAO;QACP,IAAI,EAAE,GAAG,gBAAgB,CAAC;QAC1B,OAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;;gFAPQ,gBAAgB;8GAAhB,gBAAgB;QCT7B,oEACM;;QAD4B,gJAAqB;;;;;;;;;;;;;;;;;;;;;;;;ACKV;AACF;AACqB;AACA;AACQ;AACtB;;AAkB3C,MAAM,gBAAgB;;gFAAhB,gBAAgB;6GAAhB,gBAAgB;iHAfhB,CAAC,yDAAY,EAAE,uDAAW,CAAC;mIAe3B,gBAAgB,mBAbrB,mFAAyB;QACzB,2EAAqB;QACrB,2EAAqB;QACrB,6DAAgB,aALV,yDAAY,EAAE,uDAAW,aAQ/B,mFAAyB;QACzB,2EAAqB;QACrB,2EAAqB;QACrB,6DAAgB;;;;;;;;;;;;;;;;;;;;AChB0E;;AAElG;;;;;GAKG;AACI,SAAS,SAAS,CAAC,CAAS;IAC/B,IAAI,CAAC,EAAE;QACH,IAAI,UAAU,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QAChD,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,UAAU,IAAI,OAAO,CAAC;KAChC;;QAAM,OAAO,KAAK,CAAC;AACxB,CAAC;AAEM,SAAS,YAAY,CAAC,OAAe;IAExC,OAAO,CAAC,OAAwB,EAA0B,EAAE;QACxD,MAAM,GAAG,GAAW,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,EAAW,CAAC;QAChB,QAAQ,OAAO,EAAE;YACb,KAAK,OAAO;gBACR,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,EAAC,GAAG,EAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C;gBACI,OAAO,IAAI,CAAC;SACnB;IACL,CAAC,CAAC;AACN,CAAC;AAOM,MAAM,qBAAqB;IALlC;QAQY,UAAK,GAAG,oEAAwB,CAAC;KAe5C;IAbG,WAAW,CAAC,OAAsB;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE;YACR,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;SAClC;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,oEAAwB,CAAC;SACzC;IACL,CAAC;IAED,QAAQ,CAAC,OAAwB;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;;0FAjBQ,qBAAqB;mHAArB,qBAAqB,sJAHnB,CAAC,EAAC,OAAO,EAAE,yDAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;ACxCjC;;;;;AASlD,MAAM,6BAA8B,SAAQ,6DAAY;IAE3D,YAAY,OAAoB,EAAE,KAAsB,EACpC,SAA2B;QAC3C,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QADN,cAAS,GAAT,SAAS,CAAkB;IAE/C,CAAC;IAED,QAAQ;IACR,CAAC;IAED,WAAW,CAAC,GAAY;QACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;IACX,CAAC;;0GAfQ,6BAA6B;2HAA7B,6BAA6B;QCV1C,yEAAkE;QAC9D,uEAAgG;QAAnE,gJAAS,gBAAY,IAAI,CAAC,IAAC;QACpD,uDAEA;QAAA,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAAqH;QACzH,4DAAM;QACV,4DAAM;QACV,4DAAI;QACR,4DAAM;;QARE,0DAEA;QAFA,oHAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACH8C;AAKzB;AACY;;;;;;;;;;;;;;;;ICPzC,0EAAsD;IAClD,0EAA8D;IAC1D,0EAAoC;IAChC,8EAA+C;IAC3C,wEAAoH;;IACpH,qEAA0L;IAC9L,6DAAU;IAEV,0EAA6C;IACzC,wEAAmI;IAC/H,wDACJ;IAAA,6DAAI;IAEJ,2EAAoD;IAChD,yDACJ;IAAA,6DAAM;IACV,6DAAM;IACV,6DAAM;IACV,6DAAM;IAEN,4EAA6D;IACzD,yDACJ;IAAA,6DAAM;IAEN,4EAA2D;IACvD,yDACJ;IAAA,6DAAM;IAEN,4EAAkE;IAC9D,yDACJ;IAAA,6DAAM;IAEN,4EAAuL;IACnL,uEAA6D;IACjE,6DAAM;IAEN,4EAA6D;IACzD,2FAAmH;IAAzC,yWAAwC;;IAAC,6DAAqB;IAC5I,6DAAM;IAEN,4EAA8D;IAC1D,+EAA2D;IACvD,4EAAgE;IAA9C,yVAA6C;IAC3D,+DAAK;IAAL,wEAAK;IACD,uEAA6G;IACjH,6DAAM;IACV,6DAAM;IACV,6DAAS;IACb,6DAAM;IACV,6DAAM;;;IA7CkB,2DAAwF;IAAxF,wRAAwF;IAC3F,2DAA4E;IAA5E,kNAA4E;IAI9E,2DAAgE;IAAhE,2MAAgE;IAC/D,2DACJ;IADI,2GACJ;IAGI,2DACJ;IADI,wGACJ;IAMR,2DACJ;IADI,mHACJ;IAGI,2DACJ;IADI,qGACJ;IAGI,2DACJ;IADI,4GACJ;IAE8D,2DAAwH;IAAxH,kSAAwH;IAC7K,2DAAiD;IAAjD,0NAAiD;IAIlC,2DAAsB;IAAtB,uFAAsB;;ADrB3C,MAAM,qBAAsB,SAAQ,6DAAY;IAqBnD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,KAAsB,EAAU,SAA2B;QAC3E,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,UAAK,GAAL,KAAK,CAAiB;QAAU,cAAS,GAAT,SAAS,CAAkB;QAVtE,aAAQ,GAAiB,MAAM,CAAC;QAOjC,kBAAa,GAAiB,IAAI,0CAAO,EAAO,CAAC;QAMrD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnE,CAAC;IAvBD,IAAa,IAAI,CAAC,KAAwB;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAkBD,QAAQ;IACR,CAAC;IAEO,UAAU,CAAC,KAAwB;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,yBAAyB,CAAC,IAAuB;QAC7C,IAAI,IAAI,CAAC,OAAO,EAAE;YAEd,IAAI,CAAC,YAAY,GAAG;gBAChB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC1B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;gBACnC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;gBACrI,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;gBACnC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG;gBACxF,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;gBACrC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;aACtB,CAAC;SACL;IACL,CAAC;IAED,IAAY,kBAAkB;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,GAAG,GAAa,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnH,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aACrG;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;aACtC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aACrC;YACD,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,EAAU;QACzB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC;aAC3C,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,EAAE,GAAG,EAAE;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC;IACV,CAAC;IAED,eAAe,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE/B,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;aAC5C,IAAI,CAAC,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,EAAE,GAAG,EAAE;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC;IACV,CAAC;;0FAxGQ,qBAAqB;oHAArB,qBAAqB;QChBlC,oHAiDM;;QAjD4B,mFAAkB;;;;;;;;;;;;;;;;;;;;;;;;ACCE;;;;;;;;AAc/C,MAAM,qBAAsB,SAAQ,6DAAY;IAInD,YAAmB,OAAoB,EAAE,KAAsB,EAC3C,WAA4B,EAAU,OAAoB;QAC1E,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAFP,YAAO,GAAP,OAAO,CAAa;QACnB,gBAAW,GAAX,WAAW,CAAiB;QAAU,YAAO,GAAP,OAAO,CAAa;QAG1E,IAAI,CAAC,WAAW,CAAC,kBAAkB;aAC9B,SAAS,CAAC,CAAC,GAAwB,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACxB,CAAC,CAAC,CAAC;IACX,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAED,WAAW;IACX,CAAC;IAED,UAAU,CAAC,KAAiB;QACxB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;;0FAvBQ,qBAAqB;mHAArB,qBAAqB;QCflC,uEAAqF;QAA7B,8IAAS,sBAAkB,IAAC;QAChF,yEAAmC;QAC/B,yEAAkB;QACd,8DAAK;QAAL,sEAAK;QACD,oEAA6G;QACjH,4DAAM;QACV,4DAAM;QACV,4DAAM;QAEN,+DAAsC;QAAtC,yEAAsC;QAClC,uDACJ;QAAA,4DAAM;QACV,4DAAI;;QAZD,6IAA4B;QAUvB,0DACJ;QADI,2LACJ;;;;;;;;;;;;;;;;;;;ACVyG;;AAItG,MAAM,oBAAoB;IAE7B;QAIQ,qBAAgB,GAAW,OAAO,CAAC;QAHvC,IAAI,CAAC,MAAM,GAAG,4EAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9D,CAAC;IAKD,IAAI,KAAK,CAAC,KAAa;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,0EAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;SACpD;aAAM;YACH,8EAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACjD;IACL,CAAC;IAED,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,IAAI,CAAC,MAAM,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,KAAK;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;;wFA5BQ,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJY;AACA;AACM;AACc;AACH;AACS;AACN;AACA;AACwB;AACb;AACV;AACU;AACE;;AA6BvE,MAAM,cAAc;;4EAAd,cAAc;4GAAd,cAAc;iHALb;QACN,yEAAgB;KACnB,YAvBQ;YACL,0DAAY;YACZ,qFAAoB;YACpB,0DAAY;YACZ,gEAAmB;YACnB,2EAAgB;YAChB,wEAAiB;YACjB,iFAAkB;YAClB,sFAAmB;YACnB,sFAAmB;SACtB;oIAgBQ,cAAc,mBAdnB,4EAAqB;QACrB,4EAAqB;QACrB,oGAA6B,aAb7B,0DAAY;QACZ,qFAAoB;QACpB,0DAAY;QACZ,gEAAmB;QACnB,2EAAgB;QAChB,wEAAiB;QACjB,iFAAkB;QAClB,sFAAmB;QACnB,sFAAmB,aAQnB,4EAAqB;QACrB,4EAAqB;QACrB,oGAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnC4B;AAKzB;AACiE;AACzD;AACF;AACW;AAGd;AACE;AAC6B;AACvB;AAES;;;AAQrD,MAAM,eAAe;IA4HxB,YAAoB,QAAkB,EAAU,eAAoC;QAAhE,aAAQ,GAAR,QAAQ,CAAU;QAAU,oBAAe,GAAf,eAAe,CAAqB;QAnH5E,sBAAiB,GAAW,IAAI,CAAC;QAIzC,kBAAa,GAAiB,IAAI,yCAAO,EAAE,CAAC;QAE5C,gBAAgB;QACR,sBAAiB,GAAW,KAAK,CAAC;QAClC,kBAAa,GAAW,IAAI,CAAC;QAC7B,iBAAY,GAAW,IAAI,CAAC;QAC5B,0BAAqB,GAAW,KAAK,CAAC;QACtC,8BAAyB,GAAW,MAAM,CAAC;QAC3C,8BAAyB,GAAW,MAAM,CAAC;QAC3C,cAAS,GAAW,IAAI,CAAC;QA6HjC,iBAAY,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAC1D,sBAAiB,GAAyB,IAAI,kDAAe,CAAM,IAAI,CAAC,CAAC;QACzE,uBAAkB,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAxB5D,sBAAsB;QACtB,IAAI,CAAC,IAAI,GAAe,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6DAAU,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sDAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAiB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wDAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,oBAAoB,GAA2B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oFAAsB,CAAC,CAAC;QAC9F,IAAI,CAAC,KAAK,GAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8DAAe,CAAC,CAAC;QAEjE,IAAI,CAAC,cAAc,GAAG;YAClB,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAC;YAChF,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAC;YAClF,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAC;YAClF,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,0BAA0B,EAAC;YACpF,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAC;YAC9E,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAC;YAChF,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAC;YAChF,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAyB,EAAC;YAClF,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAC;SACzD,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IArHD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,IAAI,aAAa,CAAC,KAAa;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;IACtC,CAAC;IAGD,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAClC,CAAC;IAGD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;IACjC,CAAC;IAGD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,YAAY,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,KAAY;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;IACvC,CAAC;IAED,IAAI,eAAe,CAAC,KAAqB;QACrC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;IACxC,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACzC,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAc;QAChC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACzC,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAoB;QACtC,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC;IACpD,CAAC;IA+BD,8CAA8C;IAC9C,4BAA4B;IAC5B,IAAI;IAEJ,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAQD,IAAI,QAAQ;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAQD,IAAI,SAAS,CAAC,KAAmC;QAC7C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAEO,IAAI;QACR,IAAI,CAAC,WAAW,GAAG,IAAI,wEAAuB,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEO,YAAY;QAChB,OAAO,IAAI,wEAAc,CAAC;YACtB,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,iBAAiB,EAAE,EAAE;YACrB,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YAChC,aAAa,EAAE,EAAE;YACjB,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACvC,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,KAAK;YACrB,iBAAiB,EAAE,KAAK;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;YACvC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;YACxC,cAAc,EAAE,IAAI,CAAC,cAAc;SACtC,CAAC,CAAC;IACP,CAAC;IAED,iBAAiB;QACb,IAAI,cAAc,GAAmB;YACjC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YACrE,UAAU,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;aACpC;YACD,WAAW,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YAC/D,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YACxC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;YAC1C,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAChD,gBAAgB,EAAE,IAAI,CAAC,WAAW;YAClC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,yBAAyB;SACpG,CAAC;QAEF,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,qBAAqB,CAAC,QAAiB,KAAK;QAExC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAE7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,oBAAoB,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1E,IAAI,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,EAAE;YAC1D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO;SACV;QACD,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC;QAE9C,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAA6B,wCAAwC,oBAAoB,EAAE,CAAC;aACpG,IAAI,CACD,qDAAI,CAAC,CAAC,CAAC,EACP,yDAAQ,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,EACF,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACjC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACX,CAAC;IAGO,QAAQ,CAAC,UAAsC;QACnD,IAAI,UAAU,EAAE;YACZ,8CAA8C;YAC9C,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;YACxD,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;aACzC;YACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,oCAAmC;YAC3E,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAEhC,wCAAwC;YACxC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;SACvC;aAAM;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACxB;IACL,CAAC;IAED,mBAAmB;QACf,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9D,wCAAwC;QACxC,+FAA+F;QAC/F,SAAS;QACT,kCAAkC;QAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC;;WAEG;QAEH,IAAI,oBAAoB,GAAG,0EAAkB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,kBAAkB,oBAAoB,EAAE,CAAC;aACxE,IAAI,CACD,yDAAQ,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QACrC,CAAC,CAAC,EACF,0DAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC;aACA,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEzB,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9B,OAAO;SACV;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;IACzD,CAAC;IAGD,gBAAgB;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,gBAAgB,CAAC,KAAe;QAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACjD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAC1C,CAAC;IAED,aAAa,CAAC,OAAsB;QAChC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5D,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC1B;aAAM,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAChC;aAAM;YACH,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC;IAC7C,CAAC;IAED,IAAI,WAAW,CAAC,WAAoC;QAChD,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;IACzC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEO,eAAe;QACnB,MAAM,WAAW,GAAyE,EAAE,CAAC;QAE7F,oBAAoB;QACpB,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QACzF,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,EAAE;QAEF,oBAAoB;QACpB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACjD,EAAE;QAEF,YAAY;QACZ,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACtC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACzD,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC3D;QACD,EAAE;QAEF,sBAAsB;QACtB,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;QAC/C,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;SAC/C;QACD,EAAE;QAGF,2CAA2C;QAC3C,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB;eAC3B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM;eACrC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC9C,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;SACnF;QAED,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB;eAC3B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;eACzC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC9C,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;SACnF;QACD,EAAE;QAGF,OAAO;QACP,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;YAC/D,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;SAC3D;QACD,EAAE;QAEF,OAAO,WAAW,CAAC;IACvB,CAAC;IAGD,uBAAuB;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;QAEzD,kBAAkB;QAClB,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAClD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;SACpE;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;SAC1B;QAED,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,EAAE;YAC7C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SAC5D;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACtB;QACD,EAAE;QAEF,oBAAoB;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,wEAAuB,CAAC,gHAA+D,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7H,EAAE;QAEF,YAAY;QACZ,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAE5B,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAChC,IAAI,YAAY,GAAiC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE;gBAChD,YAAY,GAAG,CAAM,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aACxD;YACD,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/D;QACD,EAAE;QAGF,sBAAsB;QACtB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAGnE,2CAA2C;QAC3C,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;SAC3F;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;SAC3F;QAED,OAAO;QACP,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAC3C,EAAE;IACN,CAAC;IAEO,wBAAwB,CAAC,WAAiF;QAC9G,IAAI,aAAa,GAAkB,EAAE,CAAC;QAEtC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;gBAC5C,aAAa,GAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACnF;iBAAM;gBACH,aAAa,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACzD;SACJ;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IAC9C,CAAC;;8EArfQ,eAAe;gHAAf,eAAe,WAAf,eAAe,mBAFZ,IAAI;;;;;;;;;;;;;;;;;;ACnBb,MAAM,uBAAuB;IAChC;IACA,CAAC;IACM,QAAQ;QACX,OAAO,gBAAgB,CAAC;IAC5B,CAAC;;8FALQ,uBAAuB;wHAAvB,uBAAuB,WAAvB,uBAAuB,mBADV,MAAM;;;;;;;;;;;;;;;;;;ACHuB;AAC2B;;AAG3E,MAAM,sBAAsB;IAO/B;QALQ,eAAU,GAAG,qBAAqB,CAAC;QACnC,cAAS,GAAW,CAAC,CAAC;QAK1B,IAAI,CAAC,eAAe,GAAG,IAAI,uDAAY,EAAY,CAAC;IACxD,CAAC;IAEM,UAAU,CAAC,SAAiB;QAE/B,IAAI,OAAO,GAAa,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACZ,OAAO,IAAI,CAAC;SACf;QAED,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExB,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEjC,0EAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,aAAa,CAAC,SAAiB;QAElC,IAAI,OAAO,GAAa,IAAI,CAAC,aAAa,EAAE,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,IAAI,CAAC;SACf;QAED,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;YACb,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEjC,0EAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,aAAa;QAChB,IAAI,OAAO,GAAG,4EAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,EAAE,CAAC;SAChB;QACD,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;IACvC,CAAC;IAEM,QAAQ,CAAC,SAAiB;QAC7B,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,QAAQ,CAAC,GAAU;QACvB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,2CAA2C;QAC3C,OAAO,GAAG,CAAC;IACf,CAAC;;4FA7EQ,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB;;;;;;;;;;;;;;;;;;ACHuE;;AAOnG,MAAM,iBAAiB;IAqB1B,gBAAiB,CAAC;IAnBlB,MAAM,KAAK,YAAY;QACnB,OAAO,iBAAiB,CAAC,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,IAAI,KAAK,GAAa,4EAAoB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,IAAI,GAAG,EAAE;YACL,OAAO,GAAG,CAAC;SACd;;YAAM,OAAO,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,KAAe;QAC/B,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,0EAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAID,MAAM,CAAC,cAAc;QACjB,8EAAsB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,aAAa;QAChB,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;QAClB,IAAI,EAAE,GAAa,iBAAiB,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAEtB,IAAI,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,SAAS,GAAG,EAAE,CAAC;IAC1B,CAAC;;kFAlCQ,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACR9B;;;;;GAKG;AACiF;AAG3B;AACiC;AAG3C;AACD;;;;;;;AAMvC,MAAM,WAAW;IA6JpB,YAAoB,KAAsB,EAAU,MAAa,EAC7C,WAAiB,EAAU,MAAc,EAAU,gBAAkC,EACrF,IAAgB,EAAU,WAA8B,EACxD,KAAqB;QAHrB,UAAK,GAAL,KAAK,CAAiB;QAAU,WAAM,GAAN,MAAM,CAAO;QAC7C,gBAAW,GAAX,WAAW,CAAM;QAAU,WAAM,GAAN,MAAM,CAAQ;QAAU,qBAAgB,GAAhB,gBAAgB,CAAkB;QACrF,SAAI,GAAJ,IAAI,CAAY;QAAU,gBAAW,GAAX,WAAW,CAAmB;QACxD,UAAK,GAAL,KAAK,CAAgB;QA/JlC,gCAA2B,GAA0B,IAAI,uDAAY,EAAW,CAAC;QAGhF,wBAAmB,GAAG,YAAY,CAAC;QAE3C,aAAQ,GAAW,IAAI,CAAC;QACxB,mBAAc,GAAY,KAAK,CAAC;QAGzB,uBAAkB,GAA0B,IAAI,uDAAY,EAAW,CAAC;QA6BvE,iBAAY,GAAW,CAAC,CAAC;QAyBzB,cAAS,GAAY,IAAI,CAAC;QAS1B,mBAAc,GAAY,KAAK,CAAC;QAUhC,+BAA0B,GAAY,KAAK,CAAC;QAoEpD,oBAAe,GAAyB,IAAI,uDAAY,EAAU,CAAC;QAInE,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAO7C,IAAI,CAAC,WAAW,CAAC,aAAa;aACzB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,KAAmB,EAAE,EAAE;YAC/B,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAClC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;aACvC;iBAAM,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;aAClC;iBAAM;gBACH,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;aACpC;YAED,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3G,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;gBACrC,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;oBACpC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;iBAChC;aACJ;iBAAM;gBACH,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;aAC3C;QACL,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAElE,IAAI,CAAC,iBAAiB,GAAG,IAAI,iDAAe,CAAmB,IAAI,CAAC,CAAC;QAErE,IAAI,EAAE,GAAa,uEAAe,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,EAAE,EAAE;YACJ,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,WAAW,CAAC;SACzC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC/B;;eAEG;YACH,IAAI,GAAG,YAAY,uDAAU,EAAE;gBAC3B,MAAM,aAAa,GAAG,GAAG,CAAC,iBAAiB,CAAC;gBAC5C,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;oBACxE,MAAM,IAAI,GAAkB;wBACxB,UAAU,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;wBAC1C,aAAa,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,iBAAiB,EAAE;qBAC9D,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC;yBAC5C,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;yBACb,SAAS,CAAC,GAAG,EAAE;oBAChB,CAAC,CAAC;iBACT;qBAAM;oBACH,IAAI,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC;oBAChC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,EAAC,CAAC,CAAC;iBACrF;aACJ;YACD;;eAEG;YACH,IAAI,GAAG,YAAY,0DAAa,IAAI,GAAG,CAAC,iBAAiB,EAAE;gBACvD,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/F;;;mBAGG;gBACH,IAAI,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC;gBAEhC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEzC,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;gBAC7F,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,EAAC,CAAC,CAAC;gBAClF;;;mBAGG;gBACH,IAAI,aAAa,GAAoB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC9E,IAAI,aAAa;oBAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAEpE;;mBAEG;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;wBACd,IAAI,CAAC,UAAU,EAAE,CAAC;qBACrB;iBACJ;gBAED;;mBAEG;gBACH,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,IAAU,MAAO,CAAC,IAAI,EAAE;oBAChD,MAAO,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;wBACrC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ;wBACzC,OAAO,EAAE,CAAC;gCACN,0BAA0B,EAAE,QAAQ;6BACvC,CAAC;qBACL,CAAC,CAAC;iBACN;gBAED,sCAAsC;gBACtC,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;aAC1E;QAEL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,QAAQ;aACd,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACtB,CAAC,CAAC;QAEN,IAAI,CAAC,KAAK,CAAC,WAAW;aACjB,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,GAAG,EAAE,OAAO,EAAE;gBACd,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;QAEL,CAAC,CAAC;IACV,CAAC;IA/QD,IAAI,aAAa,CAAC,GAAY;QAC1B,IAAI,GAAG,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,GAAG,EAAE;YAChD,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrC;IACL,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,eAAe,CAAC,KAAa;QAC7B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAClC,CAAC;IAGD,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,WAAW,CAAC,KAAc;QAC1B,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;QACD,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACzB;IACL,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,cAAc,CAAC,KAAc;QAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAGD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAc;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAGD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B,CAAC;IAAA,CAAC;IAEF,IAAI,aAAa,CAAC,GAAG;QACjB,IAAI,GAAG;YAAE,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC9B,CAAC;IAAA,CAAC;IAGF,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,0BAA0B;IAC1C,CAAC;IAAA,CAAC;IAEF,IAAI,yBAAyB,CAAC,GAAG;QAC7B,IAAI,GAAG;YAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,0BAA0B,GAAG,GAAG,CAAC;IAC1C,CAAC;IAAA,CAAC;IAKF,aAAa,CAAC,GAAa;QACvB,IAAI,CAAC,eAAe,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe;QACrE,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACzC;aAAM;YACH,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC;SAC5C;IACL,CAAC;IAKD,UAAU,CAAC,GAAa,EAAE,IAAc;QACpC,IAAI,IAAI,IAAI,SAAS;YAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAClE,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACrC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aAChC;iBAAM;gBACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACxC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aACnC;SACJ;QACD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9D,CAAC;IAID,YAAY,CAAC,GAAY;QACrB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;YAC1D,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAChC;aAAM;YACH,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;YAC7D,CAAC,CAAC,iDAAiD,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACvF,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACnC;IACL,CAAC;IAKD,IAAI,MAAM;QACN,sHAAsH;QACtH,OAAO,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IA4ID,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,gCAAgC,CAAC;aACnD,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,EAAE,CAAC;QACvC,CAAC,CAAC;IACV,CAAC;IAED,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAEO,YAAY,CAAC,WAAgB;QACjC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;YAChD,OAAO;SACV;QAED,IAAI,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,OAAO;SACV;QAED,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE;YACX,QAAQ,GAAG,OAAO,CAAC;SACtB;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,QAAQ,GAAG,GAAG,IAAI,CAAC,mBAAmB,GAAG,QAAQ,EAAE,CAAC;QAEpD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;gBAC5C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAClD;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAEO,YAAY,CAAC,GAAW;QAC5B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACvB,KAAK,GAAG,IAAI,CAAC;aAChB;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC/C;IACL,CAAC;IAEO,eAAe,CAAC,GAAW;QAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAEO,cAAc,CAAC,GAAW;QAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;gBACvC,IAAI,GAAG,IAAI,GAAG,EAAE;oBACZ,KAAK,GAAG,IAAI,CAAC;iBAChB;YACL,CAAC,CAAC,CAAC;SACN;QAED,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAC1C;IACL,CAAC;IAEO,iBAAiB,CAAC,GAAW;QACjC,IAAI,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAC7C;IACL,CAAC;IAED,cAAc,CAAC,GAAW;QACtB,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;gBACvC,IAAI,GAAG,IAAI,GAAG,EAAE;oBACZ,GAAG,GAAG,IAAI,CAAC;iBACd;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAwB,EAAE,QAAiB,EAAE,WAAoB;QACnE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;QACjB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,KAAK,GAAG,QAAQ,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9G,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxB;QACD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,WAAW,CAAC,WAAmB,EAAE,MAAc,EAAE,KAAc;QAC3D;;;WAGG;QAEH,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QAClF;;WAEG;QACH,MAAM,QAAQ,GAAG,WAAW,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;QAErE,kBAAkB;QAClB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC,CAAC;QAClE,IAAI,KAAK;YAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAC,CAAC,CAAC;IACxF,CAAC;IAED,iBAAiB,CAAC,GAAY;QAC1B,IAAI,GAAG,EAAE;YACL,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBACrB,EAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,mBAAmB,EAAC;gBAC/D,EAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,YAAY,EAAC;aAC3D,CAAC;SACL;aAAM;YACH,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,qEAAqE;IACrE,+DAA+D;IAC/D,mBAAmB,CAAC,MAAc,EAAE,aAAqB,EAAE,QAAgB,EAAE,UAAkB;QAC3F,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC;gBAChB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;;gBAE1D,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAE3C,IAAI,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;gBAC5C,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACxF;iBAAM;gBACH,IAAI,IAAI,GAAoB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAClD;SACJ;aAAM;YACH,IAAI,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;gBAC5C,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,CAAC;aACvD;SACJ;QAED,IAAI,QAAQ,GAAG,UAAU,EAAE;YACvB,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACjC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;YAE1D,IAAI,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;gBAC5C,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACxF;iBAAM;gBACH,IAAI,IAAI,GAAoB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAClD;SACJ;aAAM;YACH,IAAI,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;gBAC5C,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,CAAC;aACvD;SACJ;IACL,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,WAAoB;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;YACxE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;SAClF;QACD;;WAEG;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,IAAU,MAAO,CAAC,IAAI,EAAE;YACnD,MAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;gBAC5B,YAAY,EAAE,IAAI;aACrB,CAAC,CAAC;SACN;QACD;;WAEG;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YACvB,MAAO,CAAC,SAAS,GAAS,MAAO,CAAC,SAAS,IAAI,EAAE,CAAC;YAClD,MAAO,CAAC,SAAS,CAAC,IAAI,CAAC;gBACzB,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE;oBACF,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;oBACrB,KAAK,EAAE,IAAI;iBACd;aACJ,CAAC,CAAC;SACN;IACL,CAAC;IAED,cAAc,CAAC,WAAmB;QAC9B,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;YACxE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC;SAClF;IACL,CAAC;IAED,UAAU;QACN,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAC,CAAC,CAAC;IAC5E,CAAC;IAED,gBAAgB,CAAC,IAAS,EAAE,OAAe,gBAAgB;QACvD,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,aAAa,GAAyC,QAAQ,CAAC,aAAa,CAAC,0CAA0C,IAAI,IAAI,CAAC,CAAC;QACrI,IAAI,CAAC,aAAa,EAAE;YAChB,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjD,aAAa,CAAC,IAAI,GAAG,qBAAqB,CAAC;YAC3C,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;YACxB,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACnC;aAAM;YACH,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7C;IACL,CAAC;IAED,eAAe,CAAC,WAAmB,EAAE,YAAsB;QACvD,IAAI,CAAC,WAAW;YAAE,OAAO,WAAW,CAAC;QACrC,IAAI,KAAK,GAAW,EAAE,CAAC;QACvB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE;gBACnC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;aAChC;QACL,CAAC,CAAC;QACF,OAAO,KAAK,CAAC;IACjB,CAAC;;sEAlhBQ,WAAW;4GAAX,WAAW,WAAX,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;ACpB+B;AACC;AAIwB;AACjB;AAEJ;AAEvB;;;;;;;AAIpC,mCAAmC;AAG5B,MAAM,aAAa;IAatB,YAAoB,IAAgB,EAAU,KAAsB,EAChD,MAAc,EAAU,OAAoB,EAC5C,YAA8B;QAF9B,SAAI,GAAJ,IAAI,CAAY;QAAU,UAAK,GAAL,KAAK,CAAiB;QAChD,WAAM,GAAN,MAAM,CAAQ;QAAU,YAAO,GAAP,OAAO,CAAa;QAC5C,iBAAY,GAAZ,YAAY,CAAkB;QAblD,0BAAqB,GAAW,+BAA+B,CAAC;QAChE,cAAS,GAAW,OAAO,CAAC;QAQ5B,iBAAY,GAAsB,IAAI,uDAAY,EAAO,CAAC;QAMtD,IAAI,OAAO,GAAY,KAAK,CAAC;QAE7B,MAAM,EAAE,GAAa,mFAA0B,CAAC;QAChD,IAAI,EAAE,EAAE;YACJ,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,SAAS,GAAG,EAAE,EAAE;gBAChB,OAAO,GAAG,IAAI,CAAC;aAClB;SACJ;QAED,IAAI,CAAC,OAAO,EAAE;YACV;;eAEG;YACH,aAAa,CAAC,aAAa,EAAE,CAAC;SACjC;aAAM;YACH;;iBAEK;YACL,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;SAC/B;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,uDAAY,EAAE,CAAC;IAC1C,CAAC;IAEO,MAAM,CAAC,aAAa;QACxB,yFAAgC,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,QAAgB,EAAE,GAAW,EAAE,MAAc;QAE/C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAE7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,OAAO,GAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,IAAI,CAAC,YAAY,EAAE,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;aAC5D,SAAS,CACN,CAAC,CAAC,EAAE,EAAE;YACF,mFAA0B,GAAG;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,CAAC,CAAC,kBAAkB;gBACjC,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE;aACtE,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;YAE5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE;gBAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;aACpD;YAED,oBAAoB;YAEpB;;;;eAIG;YAGH,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBAEvF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,GAAG,CAAC;qBAClC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;qBACb,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;oBACd,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC;oBAClC,UAAU,CAAC,GAAG,EAAE;wBACZ,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACtB,CAAC,EAAE,CAAC,CAAC,CAAC;gBACV,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,UAAU,CAAC,GAAG,EAAE;oBACZ,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACtB,CAAC,EAAE,CAAC,CAAC,CAAC;aACT;YAED,oBAAoB;QACxB,CAAC,EACD,CAAC,CAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,OAAO,EAAE,IAAI,CAAC,qBAAqB;YACnC,IAAI,EAAE,CAAC;SACV,CAAC,CACL,CAAC;IACV,CAAC;IAED,MAAM,CAAC,YAAsB;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;aACvB,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,GAAG,EAAE;YACZ,yFAAgC,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,yEAAiB,CAAC,MAAM,CAAC,CAAC;YAE1B,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAE1B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAC1B,IAAI,GAAG,CAAC;YACR,IAAI,YAAY,IAAI,sEAAc,CAAC,GAAG,CAAC,EAAE;gBACrC,IAAI,YAAY,EAAE;oBACd,GAAG,GAAG,GAAG,CAAC;iBACb;qBAAM;oBACH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;iBAClD;gBACD,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;aACvB;iBAAM;gBACH,QAAQ,CAAC,MAAM,EAAE,CAAC;aACrB;QACL,CAAC,CAAC;IACV,CAAC;IAED,UAAU;QACN,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEO,eAAe;QACnB,IAAI,MAAM,GAAG,mBAAmB,IAAI,CAAC,QAAQ,gBAAgB,IAAI,CAAC,QAAQ,GAAG,CAAC;QAE9E,OAAO,IAAI,6DAAW,CAAC,EAAC,eAAe,EAAE,MAAM,EAAC,CAAC,CAAC;IACtD,CAAC;;0EAhJQ,aAAa;8GAAb,aAAa,WAAb,aAAa;;;;;;;;;;;;;;;;;;;;;ACjB6B;AAGd;AACA;;;;AAMlC,MAAM,kBAAkB;IAM3B,YAAoB,IAAgB,EAAU,SAAuB;QAAjD,SAAI,GAAJ,IAAI,CAAY;QAAU,cAAS,GAAT,SAAS,CAAc;QAJrE,sBAAiB,GAA0C,IAAI,uDAAY,EAAe,CAAC;QAE3F,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;IAGjD,CAAC;IAED,OAAO,CAAC,GAAuB;QAC3B,IAAI,GAAG,GAAG,IAAI,yCAAO,EAAiB,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,sBAAsB,EAAE,GAAG,CAAC;aACrD,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEP,OAAO,GAAG,CAAC;IACf,CAAC;IAED,cAAc,CAAC,GAAgB;QAC3B,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;YACzC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChG;IACL,CAAC;IAED,iBAAiB,CAAC,GAAgB;QAC9B,IAAI,GAAG,EAAE;YACL,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;gBACxF,GAAG,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,iBAAiB,EAAE;aAC3E;SACJ;IACL,CAAC;IAED,WAAW,CAAC,GAAkB;QAC1B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC,CAAC;SACL;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,iCAAiC,CAAC,CAAC;IAC/E,CAAC;;oFAhDQ,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB;;;;;;;;;;;;;;;;;;ACNiB;;AAIzC,MAAM,YAAY;IAErB,YAAqB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IACvC,CAAC;IAED,WAAW,CAAC,KAAU,EAAE,OAAgB;QACpC,MAAM,IAAI,GAA2B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4DAAU,CAAC,CAAC;QACnE,IAAI,aAA4B,CAAC;QACjC,IAAI,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,CAAC;QAEnC,IAAI;YACA,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAClE,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;oBACjC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;iBAChC;gBACD,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBAC/B,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;iBAC5B;gBACD,aAAa,GAAG;oBACZ,OAAO,EAAE,YAAY,UAAU,aAAa,QAAQ,EAAE;oBACtD,OAAO,EAAE,OAAO,IAAI,IAAI;iBAC3B;aAEJ;iBAAM;gBACH,aAAa,GAAG;oBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC9B,OAAO,EAAE,OAAO,IAAI,IAAI;iBAC3B;aACJ;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,aAAa,GAAG;gBACZ,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;gBACzB,OAAO,EAAE,OAAO,IAAI,IAAI;aAC3B,CAAC;SACL;QAED,IAAI,CAAC,IAAI,CAAgB,kBAAkB,EAAE,aAAa,CAAC;aACtD,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;;wEAtCQ,YAAY;6GAAZ,YAAY,WAAZ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLiD;AACtC;AAOwD;;;;;;;;AAUrF,MAAM,kBAAkB;IAK3B,YAAoB,kBAAsC,EAAU,IAAgB,EAAU,MAAoB,EAC9F,KAAsB,EAAU,gBAAsC,EACtE,OAAoB;QAFpB,uBAAkB,GAAlB,kBAAkB,CAAoB;QAAU,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAc;QAC9F,UAAK,GAAL,KAAK,CAAiB;QAAU,qBAAgB,GAAhB,gBAAgB,CAAsB;QACtE,YAAO,GAAP,OAAO,CAAa;QALxC,QAAG,GAAgC,EAAE,CAAC;QAC9B,mBAAc,GAAW,GAAG,CAAC;QAKjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,OAAe,EAAE,QAAgB;QAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC;aAC1C,IAAI,CACD,yDAAS,CAAC,CAAC,eAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,EACzF,oDAAI,CAAC,CAAC,CAAC,CACV;IACT,CAAC;IAEO,iBAAiB,CAAC,eAAuB,EAAE,QAAgB;QAC/D,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,oBAAoB,EAAE,EAAC,YAAY,EAAE,eAAe,EAAC,CAAC;aAC7F,IAAI,CACD,0DAAU,CAAC,CAAC,GAAQ,EAAE,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,wCAAE,CAA2B,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;QAClF,CAAC,CAAC,EACF,yDAAS,CAAC,GAAG,CAAC,EAAE;YACZ,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;gBACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aACjD;iBAAM;gBACH,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aACnD;QACL,CAAC,CAAC,EACF,oDAAI,CAAC,CAAC,CAAC,EACP,wDAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CACnD;IACT,CAAC;IAED,oBAAoB,CAAC,GAAoD,EAAE,QAAgB;QACvF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SAC1C;QAED,IAAI,MAAM,GAA6B;YACnC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;SAC1C;QACD,OAAO,wCAAE,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,GAAoD,EAAE,QAAgB;QACrF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,mCAAmC,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;QAElF,MAAM,MAAM,GAAwB;YAChC,IAAI,EAAE,GAAG;YACT,gBAAgB,EAAE,OAAO;YACzB,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;SAC5C,CAAC;QACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,sGAAqB,EAAE,MAAM,CAAC;aAC3D,WAAW;aACX,IAAI,CAAC,oDAAG,CAAC,GAAG,CAAC,EAAE,CAA2B,GAAG,CAAC,CAAC;IACxD,CAAC;;oFAhEQ,kBAAkB;oHAAlB,kBAAkB,WAAlB,kBAAkB;;;;;;;;;;;;;;;;;;;AChBgB;AACC;;AAIzC,MAAM,kBAAkB;IAC3B,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IACtC,CAAC;IAED,WAAW,CAAC,KAAU;QAClB,MAAM,SAAS,GAAiC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,0DAAa,CAAC,CAAC;QACjF,MAAM,IAAI,GAA2B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4DAAU,CAAC,CAAC;QACnE,IAAI,aAA4B,CAAC;QACjC,IAAI,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,CAAC;QAEnC,IAAI;YACA,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAClE,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;oBACjC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;iBAChC;gBACD,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBAC/B,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;iBAC5B;gBACD,aAAa,GAAG;oBACZ,OAAO,EAAE,YAAY,UAAU,aAAa,QAAQ,EAAE;iBACzD;aAEJ;iBAAM;gBACH,aAAa,GAAG;oBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;iBACjC;aACJ;SAEJ;QAAC,OAAO,CAAC,EAAE;YACR,aAAa,GAAG;gBACZ,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;aAC5B,CAAC;SACL;QACD,IAAI,CAAC,IAAI,CAAgB,kBAAkB,EAAE,aAAa,CAAC;aACtD,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEzB,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;YACrC,SAAS,CAAC,MAAM,EAAE,CAAC;SACtB;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;;oFAxCQ,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;ACRM;AACO;AAKnB;;;;;AAMlB,MAAM,kBAAkB;IAS3B,YAAoB,YAAiC,EAAU,MAAc,EACzD,IAAgB;QADhB,iBAAY,GAAZ,YAAY,CAAqB;QAAU,WAAM,GAAN,MAAM,CAAQ;QACzD,SAAI,GAAJ,IAAI,CAAY;QARpC,kBAAa,GAA6B,IAAI,iDAAe,CAAU,KAAK,CAAC,CAAC;QAC9E,oBAAe,GAAgD,IAAI,iDAAe,CAA6B,IAAI,CAAC,CAAC;QAErH,0BAAqB,GAAwB,IAAI,CAAC;QAElD,2BAAsB,GAAgD,IAAI,iDAAe,CAA6B,IAAI,CAAC,CAAC;QAMxH,IAAI,CAAC,MAAM,CAAC,MAAM;aACb,IAAI,CAAC,sDAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,GAAG,YAAY,0DAAa,IAAI,GAAG,YAAY,6DAAgB,EAAE;gBACjE,OAAO,IAAI,CAAC;aACf;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;aACF,SAAS,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACtC,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;IAEnB,CAAC;IAEO,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAA6B,4CAA4C,CAAC,CAAC,IAAI,CACxF,oDAAI,CAAC,CAAC,CAAC,CACV,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,WAAW;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QACjD,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC5B,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjC;aAAM;YACH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClC;IACL,CAAC;IAEO,wBAAwB,CAAC,EAAU;QACvC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IAGO,0BAA0B;QAC9B,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE;YAC5F,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO;SACV;QAGD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QAExD,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YACnD,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAClC,OAAO,KAAK,CAAC;aAChB;YAED,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE9E,IAAI,GAAG,IAAI,MAAM,EAAE;gBAEf,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE;oBACvD,OAAO,KAAK,CAAC;iBAChB;gBAED,OAAO,IAAI,CAAC;aACf;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC5B,OAAO,GAAG,IAAI,CAAC;SAClB;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;;oFA5FQ,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB;;;;;;;;;;;;;;;;;ACdwB;;AAGhD,MAAM,WAAW;IADxB;QAEI,eAAU,GAA6B,IAAI,uDAAY,EAAc,CAAC;QACtE,aAAQ,GAA0B,IAAI,uDAAY,EAAW,CAAC;KACjE;;sEAHY,WAAW;4GAAX,WAAW,WAAX,WAAW;;;;;;;;;;;;;;;;;;;;ACHxB;AACA;AACA;;AAUM,MAAO8G,iBAAP,CAAwB;AAM1BpI;AAJO,yBAA4C,IAAIgI,uDAAJ,EAA5C;AAEC,sBAAqB,CAArB;AAGJE,IAAAA,+CAAS,CAACG,MAAD,EAAS,QAAT,CAAT,CACKrE,IADL,CACUmE,4DAAY,CAAC,GAAD,EAAMF,uCAAN,EAAsB;AAACK,cAAQ,EAAE;AAAX,KAAtB,CADtB,EAEK5H,SAFL,CAEe,MAAK;AACZ,WAAK6H,WAAL;AACH,KAJL;AAKH;;AAEOA,aAAW;AACf,UAAMC,aAAa,GAAGH,MAAM,CAACI,WAA7B;;AACA,QAAID,aAAa,IAAI,CAAjB,IAAsBA,aAAa,IAAI,KAAKE,UAAhD,EAA4D;AACxD,WAAKC,aAAL,CAAmBC,IAAnB,CAAwB;AACpBC,gBAAQ,EAAE,KAAKH,UADK;AAEpBI,eAAO,EAAEN;AAFW,OAAxB;AAIA,WAAKE,UAAL,GAAkBF,aAAlB;AACH;AACJ;;AAEMO,mBAAiB;AACpB,SAAKR,WAAL;AACH;;AA3ByB;;;mBAAjBH;AAAiB;;;SAAjBA;AAAiB3G,WAAjB2G,iBAAiB;AAAAY,cAFd;;;;;;;;;;;;;;;;;;;;ACLT,MAAM,mBAAmB;IAG5B,YAAoB,cAA8B,EAAU,MAAc;QAAtD,mBAAc,GAAd,cAAc,CAAgB;QAAU,WAAM,GAAN,MAAM,CAAQ;QACtE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,WAAiF;QACvF,MAAM,QAAQ,GAAwB,OAAO,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEO,QAAQ,CAAC,WAAiF,EAAE,mBAAwC;QACxI,sDAAsD;QAEtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,WAAW,EAAE,WAAW;YACxB,mBAAmB,EAAE,mBAAmB;YACxC,kDAAkD;YAClD,kBAAkB,EAAE,KAAK;YACzB,4BAA4B;YAC5B,UAAU,EAAE,KAAK;SACpB,CAAC,CAAC;IACP,CAAC;;sFAlCQ,mBAAmB;oHAAnB,mBAAmB,WAAnB,mBAAmB,mBADP,KAAK;;;;;;;;;;;;;;;;;;;;ACJyB;AACjB;AACkB;;;AAKjD,MAAM,gBAAgB;IAgBzB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAZlC,yBAAoB,GAAkC,IAAI,uDAAY,EAAmB,CAAC;QAE1F,wBAAmB,GAAY,KAAK,CAAC;QAWjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,MAAM;aACb,IAAI,CAAC,sDAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,4DAAe,CAAC,CAAC;aACnD,SAAS,CAAC,CAAC,EAAmB,EAAE,EAAE;YAC/B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC;YAC3B,IAAI,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE;gBACxB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACnC;iBAAM;gBACH,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;aACpC;YAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IAEX,CAAC;;gFA/BQ,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB,mBAFb,MAAM;AAoCtB,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,mDAAM;IACN,iDAAK;AACT,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;;;;;;;;;;;;;;;;;;;ACvCiE;;;AAG3D,MAAM,gBAAgB;IAIzB,YAAmB,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;QAFzC,QAAG,GAAgC,EAAE,CAAC;QAGlC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9B,CAAC;IAED,YAAY,CAAC,MAAkC;QAC3C,IAAI,MAAM,EAAE;YAER,cAAc;YACd,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC;YAC3D,IAAI,UAAU,EAAE;gBACZ,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC5G,UAAU,CAAC,cAAc,CAAC,YAAY,GAAG,mBAAmB,CAAC;gBAC7D,IAAI,UAAU,CAAC,eAAe,EAAE,MAAM;oBAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,mBAAmB,CAAC;aAC5G;YAED,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,IAAI,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAClF,2FAA2F;gBAC3F,IAAI,kBAAkB;oBAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAC3D;SACJ;IACL,CAAC;IAED,2BAA2B,CAAC,UAAsC,EAAE,UAAoC;QAEpG,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,CAAC,YAAW;QAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC;QAC/D,6DAA6D;QAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;QAE3D,IAAI,cAAc,GAAW,IAAI,CAAC;QAElC,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YAC5B,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;SAC1E;aAAM,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACnC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;SAChF;aAAM,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;YAClC,cAAc,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,CAAC;SACvI;aAAM,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;YAClC,cAAc,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,CAAC;SACvI;aAAM;SAEN;QAED,IAAI,UAAU,IAAI,cAAc,EAAE;YAC9B,IAAI,UAAU,CAAC,cAAc,EAAE,YAAY,IAAI,+EAAiB,EAAE;gBAC9D,cAAc,GAAG,UAAU,CAAC,cAAc,EAAE,YAAY,GAAG,cAAc,CAAC;aAC7E;iBAAM;gBACH,cAAc,IAAI,UAAU,CAAC,cAAc,EAAE,YAAY,CAAC;aAC7D;SACJ;QAED,IAAI,cAAc,EAAE;YAChB,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC;YACjE,IAAI,kBAAkB,GAA6B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1F,kBAAkB,CAAC,IAAI,GAAG,iBAAiB,CAAC;YAC5C,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpE,kBAAkB,CAAC,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC;YAChE,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC;YAEjF,OAAO,kBAAkB,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,WAAW,CAAC,GAAW,EAAE,cAAuB,KAAK,EAAE,mBAA2B,CAAC,EAAE,oBAA6B,KAAK;QAC1H,IAAI,GAAG,GAAG,GAAG,CAAC;QACd,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE;YACtC,IAAI,gBAAgB,IAAI,CAAC,EAAE;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACzB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC7B,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;wBAC9B,gBAAgB,GAAG,CAAC,CAAC;wBACrB,MAAM;qBACT;iBACJ;gBACD,IAAI,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;aACnE;iBAAM;gBACH,IAAI,SAAS,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACrD,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChE,IAAI,CAAC,iBAAiB,IAAI,SAAS,EAAE;oBACjC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;iBACpC;aACJ;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;;gFAhGQ,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB;;;;;;;;;;;;;;;;;;;ACCkC;;;AAIxD,MAAM,iBAAiB;IAI1B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAClC,CAAC;IAED,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACjE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,uFAAsF;QAEzG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACpB,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAEnD,IAAI,KAAK,GAAY,mFAA0B,IAAI,IAAI,CAAC;QACxD,IAAI,EAAE,GAAa,mFAA0B,CAAC;QAE9C,IAAI,KAAK,IAAI,EAAE,EAAE;YACb,IAAI,CAAC,wFAA+B,EAAE,EAAE;gBACpC,KAAK,GAAG,KAAK,CAAC;aACjB;SACJ;QAED,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;iBACzB,IAAI,CAAC,GAAG,EAAE;gBACP,OAAO,KAAK;YAChB,CAAC,CAAC,CAAC;SACV;;YAAM,OAAO,IAAI,CAAC;IACvB,CAAC;;kFA5BQ,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB;;;;;;;;;;;;;;;;;ACbyB;;AAGhD,MAAM,aAAa;IAD1B;QAEI,uBAAkB,GAAyB,IAAI,uDAAY,EAAU,CAAC;KAKzE;IAHG,sBAAsB,CAAC,MAAc;QACjC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;;0EALQ,aAAa;8GAAb,aAAa,WAAb,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACeiE;AAE9B;AACf;AAEX;;;;;;AAInC,IAAI,QAAQ,GACR;IACI,cAAc,EAAE,IAAI;IACpB,sBAAsB,EAAE,EAAE;IAC1B,2BAA2B;IAC3B,SAAS,EAAE,CAAC,EAAC,KAAK,EAAE,EAAE,EAAC,EAAE,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC;IACrC,SAAS,EAAE;QACP;YACI,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,IAAI;SACf;QACD;YACI,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,IAAI;SACf;KACJ;IACD,QAAQ,EAAE;QACN;YACI,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,WAAW;YAC3B,iBAAiB,EAAE,IAAI;SAC1B;QACD;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,GAAG;YACnB,SAAS,EAAE,EAAE;YACb,cAAc,EAAE,aAAa;YAC7B,iBAAiB,EAAE,IAAI;SAC1B;KACJ;IACD,kBAAkB,EAAE;QAChB,KAAK,EAAE,yGAAyG;QAChH,aAAa,EAAE,eAAe;QAC9B,aAAa,EAAE,iBAAiB;QAChC,sBAAsB,EAAE,kDAAkD;QAC1E,KAAK,EAAE;YACH,EAAE,EAAE,+CAA+C;YACnD,EAAE,EAAE,+CAA+C;SACtD;QACD,SAAS,EAAE,iBAAiB;KAC/B;IACD,WAAW,EAAE,2BAA2B;IACxC,gBAAgB,EAAE,EAAE;IACpB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE;QACR,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,IAAI;KACV;IACD,aAAa,EAAE;QACX,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,KAAK;KACX;IACD,OAAO,EAAE,IAAI;IACb,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;IACpC,eAAe,EAAE,oBAAoB;IACrC,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,EAAE;IACjB,kBAAkB,EAAE,EAAE;IACtB,WAAW,EAAE,KAAK;CACrB,CAAC;AAEC,SAAS,gBAAgB,CAAC,KAAsB;IACnD,OAAO,KAAK,CAAC,SAAS,EAAE;AAC5B,CAAC;AAGM,MAAM,eAAe;IAoLxB,YAAY,KAAwB,EAAU,IAAgB,EAC1C,IAAwB,EAAU,YAA8B;QADtC,SAAI,GAAJ,IAAI,CAAY;QAC1C,SAAI,GAAJ,IAAI,CAAoB;QAAU,iBAAY,GAAZ,YAAY,CAAkB;QAhLpF,0BAAqB,GAAuB,IAAI,+CAAa,CAAM,CAAC,CAAC,CAAC,iCAAgC;QACtG,+EAA+E;QAC/E,+CAA+C;QAC/C,kDAAkD;QAElD,iBAAY,GAA0B,EAAE,CAAC;QAoIjC,eAAU,GAAY,KAAK,CAAC;QAS5B,sBAAiB,GAAW,SAAS,CAAC;QAmMtC,sBAAiB,GAAuB,IAAI,CAAC;QAnKjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxF,IAAI,IAAI,GAAY,uEAAe,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;QACD,IAAI,IAAI,GAAG,uEAAe,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAE9D,CAAC;IA7LD,IAAI,qBAAqB;QACrB,OAAO,aAAa,CAAC;IACzB,CAAC;IAGD,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY,CAAC,KAAa;QAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAGD,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,IAAI,mBAAmB,CAAC,KAA0B;QAC9C,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,CAAC;IAGD,IAAI,GAAG;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,CAAC,KAAkC;QACtC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAGD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,OAAO,CAAC,KAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe;QACf,IAAI,GAAG,GAAW,WAAW,CAAC;QAC9B,QAAQ,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE;YAC9B,KAAK,EAAE;gBACH,GAAG,GAAG,UAAU,CAAC;gBACjB,MAAM;YACV,KAAK,EAAE;gBACH,GAAG,GAAG,aAAa,CAAC;gBACpB,MAAM;YACV,KAAK,EAAE;gBACH,GAAG,GAAG,aAAa,CAAC;gBACpB,MAAM;SACb;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,CAAC,KAAiB;QAC5B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,cAAc,CAAC,KAAqB;QACpC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAGD,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,IAAI,eAAe,CAAC,KAAsB;QACtC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAClC,CAAC;IAGD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,KAAoB;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAGD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,OAAO,CAAC,KAAuB;QAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAGD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,aAAa,CAAC,KAAqB;QACnC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAChC,CAAC;IAGD,IAAI,8BAA8B;QAC9B,OAAO,IAAI,CAAC,+BAA+B,CAAC;IAChD,CAAC;IAED,IAAI,8BAA8B,CAAC,KAAc;QAC7C,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;IACjD,CAAC;IAID,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAQD,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS,CAAC,KAAc;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAID,IAAI,aAAa;QACb,OAAO,uEAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE/C,+BAA+B;QAC/B;;;;;;;;;WASG;IACP,CAAC;IAED,IAAI,aAAa,CAAC,GAAqB;QACnC,IAAI,GAAG,EAAE;YACL,qEAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;SAC9C;aAAM;YACH,yEAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC7C;QACD,0DAA0D;QAC1D;0DACkD;IACtD,CAAC;IAyBD,UAAU,CAAC,SAAiB,EAAE,UAAkB;QAC5C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAAC,MAAe,EAAE,SAAiB,EAAE,UAAkB,EAAE,cAAuB,KAAK;QACpG,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,UAAU,CAAC;QAErD,IAAI,IAAI,CAAC,8BAA8B,EAAE;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,QAAQ,CAAC,IAAI,GAAG,WAAW,EAAC,CAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;SAC5H;aAAM;YACH,IAAI,MAAM;gBAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;SACjC;IACL,CAAC;IAEO,yBAAyB,CAAC,SAAiB,EAAE,UAAkB;QACnE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,qEAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,qEAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,CAAC;IAEO,kBAAkB,CAAC,UAA4B;QACnD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACpG,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,GAAuB,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjF,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAErE,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEO,gBAAgB,CAAC,KAAU;QAC/B,MAAM,CAAC,GAAG,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,iCAAiC;QACrC,IAAI,IAAI,CAAC,8BAA8B,EAAE;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;SACnD;QACD,qEAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,qEAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACxD,CAAC;IAED,2BAA2B;IAC3B,aAAa;IACb,aAAa;QAET,MAAM,GAAG,GAAG,sBAAsB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,GAAG,CAAC,CAAC,SAAS,EAAE;aAC1D,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG,CAAC;YACnC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACX,CAAC;IAED,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,4BAA4B,CAAC;aAC7D,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;aACb,SAAS,CAAC,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QAC5B,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,kBAAkB;QACtB,IAAI,OAAO,GAAG,EAAC,OAAO,EAAE,IAAI,6DAAW,EAAE,EAAC,CAAC;QAC3C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAElF,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG;YACrB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC;QAEF,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC;aACtE,IAAI,CACD,mDAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EACtC,mDAAG,CAAC,GAAG,CAAC,EAAE;YACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACnB,CAAC,CAAC,CACL,CAAC;QACN,OAAO,MAAM,CAAC,SAAS,EAAE;IAC7B,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEO,kBAAkB,CAAC,KAAe;QACtC,IAAI,GAAG,GAA6B,EAAE,CAAC;QACvC,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;SACzD;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,KAAoB;QAC/C,IAAI,CAAC,GAAqB,IAAI,GAAG,EAAE,CAAC;QACpC,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;YACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,IAAY;QAC5C,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,GAAW;QACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QACxC,OAAO,IAAI,CAAC;QACZ,6KAA6K;QAC7K,sDAAsD;IAC1D,CAAC;IAID,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,IAAW,iBAAiB,CAAC,KAAyB;QAClD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACnC,CAAC;;8EAlWQ,eAAe;gHAAf,eAAe,WAAf,eAAe;AAsW5B,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC3B,4CAAqB;IACrB,gDAAyB;IACzB,oCAAa;AACjB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;;;;;;;;;;;;;;;;;;;;;;;AC5cmC;AAEkB;AACS;;;;AAKxD,MAAM,WAAW;IAgBpB,WAAW;IAGX,YAAoB,IAAgB,EAAU,IAAkB;QAA5C,SAAI,GAAJ,IAAI,CAAY;QAAU,SAAI,GAAJ,IAAI,CAAc;QAjBhE,WAAM,GAA2B,IAAI,+CAAa,CAAU,CAAC,CAAC,CAAC;QAE/D,sBAAsB;QACtB,YAAO,GAAoB,IAAI,CAAC;QAChC,mBAAc,GAAoB,IAAI,CAAC;QACvC,sBAAiB,GAA2B,EAAE,CAAC;QAC/C,SAAI,GAAiB,IAAI,CAAC;QAYtB,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAZD,WAAW;IAEX,0BAA0B;IAC1B,IAAI,wBAAwB;QACxB,OAAO,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC;IASO,IAAI;QACR,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAED,qBAAqB;QACjB,IAAI,uFAA8B,EAAE;YAChC,IAAI,GAAG,GAAG,iCAAiC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAA6B,GAAG,CAAC;iBACzC,IAAI,CAAC,oDAAI,CAAC,CAAC,CAAC,CAAC;iBACb,SAAS,CACN,CAAC,GAAG,EAAE,EAAE;gBACJ,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC3B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;gBACzC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;gBAC/C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;gBACJ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAC,EAAC,EAAE,oBAAoB,CAAC,CAAC;gBAC9F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CACJ,CAAC;SACT;IACL,CAAC;IAED,QAAQ,CAAC,GAAiB;QACtB,IAAI,uFAA8B,EAAE;YAChC,IAAI,GAAG,GAAG,4BAA4B,CAAC;YACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA6B,GAAG,EAAE,GAAG,CAAC,CAAC;SAC/D;aAAM;YACH,OAAO,uCAAK,CAAC;SAChB;IACL,CAAC;IAED,cAAc,CAAC,GAAwB;QACnC,IAAI,uFAA8B,EAAE;YAChC,MAAM,GAAG,GAAG,uBAAuB,CAAC;YACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,GAAG,EAAE,GAAG,CAAC,CAAC;SACzD;aAAM;YACH,OAAO,uCAAK,CAAC;SAChB;IACL,CAAC;;sEAhEQ,WAAW;4GAAX,WAAW,WAAX,WAAW;;;;;;;;;;;;;;;;;;;;;;ACX+B;AAEQ;AACtB;AACA;;;;AASlC,MAAM,eAAe;IAaxB,YAAoB,IAAgB,EAAU,MAA4B;IAC9D,wDAAwD;QADhD,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAsB;QAV1E,uBAAkB,GAAsC,IAAI,uDAAY,EAAuB,CAAC;QAChG,0BAAqB,GAAiC,IAAI,uDAAY,EAAkB,CAAC;QACzF,4BAAuB,GAAuB,IAAI,uDAAY,EAAE,CAAC;QAMzD,kBAAa,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAKrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE;aACb,IAAI,CAAC,yDAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACX,CAAC;IAhBD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAgBD,WAAW;QACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAGD,WAAW;QAEP,IAAI,OAAO,GAAG,IAAI,uDAAY,EAAuB,CAAC;QAEtD,IAAI,uFAA8B,EAAE;YAChC,IAAI,GAAG,GAAG,yBAAyB,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,GAAG,CAAC;iBAClC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;SACV;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,oBAAoB,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC;iBAChF,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;SACV;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,yBAAyB,CAAC,OAAwC;QAC9D,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;QACzB,IAAI,uFAA8B,EAAE;YAChC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmC,4BAA4B,EAAE,OAAO,CAAC,CAAC;SAClG;aAAM;YACH,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmC,uBAAuB,EAAE,OAAO,CAAC,CAAC;SAC7F;IACL,CAAC;IAED,wBAAwB,CAAC,OAAoC;QACzD,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;QACxB,IAAI,uFAA8B,EAAE;YAChC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmC,4BAA4B,EAAE,OAAO,CAAC,CAAC;SAClG;aAAM;YACH,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmC,uBAAuB,EAAE,OAAO,CAAC,CAAC;SAC7F;IACL,CAAC;IAED,iBAAiB,CAAC,OAA6B;QAC3C,IAAI,OAAO,GAAG,IAAI,uDAAY,EAAuB,CAAC;QAEtD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtB;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtB;QAED,IAAI,uFAA8B,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,6BAA6B,EAAE,OAAO,CAAC;iBACtE,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACV;aAAM;YACH,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,wBAAwB,EAAE,OAAO,CAAC;iBACjE,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBAC5E,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;iBACpC;gBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACV;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,gBAAgB,CAAC,EAAU,EAAE,MAAc;QACvC,IAAI,OAAO,GAAG,IAAI,uDAAY,EAAW,CAAC;QAE1C,IAAI,OAAO,GAAyB;YAChC,EAAE,EAAE,EAAE;YACN,MAAM,EAAE,MAAM;SACjB,CAAC;QAEF,IAAI,uFAA8B,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,iCAAiC,EAAE,OAAO,CAAC;iBAC9D,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,GAAG;oBAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;SACV;aAAM;YACH,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,4BAA4B,EAAE,OAAO,CAAC;iBACzD,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,GAAG;oBAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;SACV;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,kBAAkB,CAAC,SAAkB,EAAE,UAAmB;QAEtD,IAAI,OAAO,GAAG,IAAI,uDAAY,EAAuB,CAAC;QAEtD,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtB;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;YAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtB;QAED,IAAI,OAAO,GAAyB;YAChC,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,UAAU;SACzB,CAAC;QACF,MAAM,MAAM,GAAmB,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5F,IAAI,uFAA8B,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,gCAAgC,EAAE,OAAO,CAAC;iBACzE,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACV;aAAM;YACH,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,2BAA2B,EAAE,OAAO,CAAC;iBACpE,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACV;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,sBAAsB,CAAC,EAAU,EAAE,MAAsB;QAErD,IAAI,OAAO,GAAG,IAAI,uDAAY,EAAuB,CAAC;QAEtD,IAAI,OAAO,GAAyB;YAChC,EAAE,EAAE,EAAE;SACT,CAAC;QAEF,IAAI,uFAA8B,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,gCAAgC,EAAE,OAAO,CAAC;iBACzE,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACV;aAAM;YACH,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,2BAA2B,EAAE,OAAO,CAAC;iBACpE,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;SACV;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,YAAY,CAAC,SAAkB,EAAE,UAAmB;QAChD,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE;YAC3B,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;YAC5C,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,SAAS,EAAE;YACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,SAAS,CAAC;SAC1E;aAAM;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;SAC5F;IACL,CAAC;IAED,MAAM;QACF,IAAI,OAAO,GAAyB;YAChC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SAC3B,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,sBAAsB,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,MAAM;QACF,IAAI,OAAO,GAAG,IAAI,uDAAY,EAAW,CAAC;QAE1C,IAAI,OAAO,GAAyB,EAAE,CAAC;QAEvC,IAAI,uFAA8B,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,2BAA2B,EAAE,OAAO,CAAC;iBACxD,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,GAAG,EAAE;oBACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAChD;gBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;SACV;aAAM;YACH,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,sBAAsB,EAAE,OAAO,CAAC;iBACnD,SAAS,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,GAAG,EAAE;oBACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAChD;gBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;SACV;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;;8EA1PQ,eAAe;gHAAf,eAAe,WAAf,eAAe;;;;;;;;;;;;;;;;;;;;;;;ACZ5B,2CAA2C;AAE3C;;GAEG;AAGI,MAAM,qBAAqB;IADlC;QAGA,gBAAW,GAAG;YACd,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,KAAK;SACT,CAAC;QACF,YAAO,GAAG;YACV,aAAa,EAAE,EAEd;SACA;KACA;;0FAbY,qBAAqB;sHAArB,qBAAqB,WAArB,qBAAqB;AAkBlC;;GAEG;AAGI,MAAM,qBAAqB;IADlC;QAGA,gBAAW,GAAG;YACd,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;SACnB;KACA;;0FANY,qBAAqB;sHAArB,qBAAqB,WAArB,qBAAqB;AAWlC;;GAEG;AAGI,MAAM,iBAAiB;IAD9B;QAGA,aAAQ,GAAG;YACX,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,GAAG;YACd,eAAe,EAAE,UAAU;YAC3B,eAAe,EAAE,MAAM;YACvB,iBAAiB,EAAE,QAAQ;YAC3B,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,UAAU;YAC9B,kBAAkB,EAAE,SAAS;YAC7B,sBAAsB,EAAE,aAAa;YACrC,mBAAmB,EAAE,UAAU;YAC/B,kBAAkB,EAAE,SAAS;YAC7B,mBAAmB,EAAE,WAAW;YAChC,gBAAgB,EAAE,SAAS;YAC3B,kBAAkB,EAAE,KAAK;YACzB,mBAAmB,EAAE,oCAAoC;YACzD,MAAM,EAAE,oCAAoC;YAC5C,gBAAgB,EAAE,oCAAoC;YACtD,WAAW,EAAE,QAAQ;YACrB,eAAe,EAAE,0BAA0B;YAC3C,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,aAAa;SACrB,CAAC;QACF,WAAM,GAAG;YACT,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,KAAK;SAClB;KACA;;kFAhCY,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB;AAqC9B;;GAEG;AAGI,MAAM,kBAAkB;IAD/B;QAGA,iBAAY,GAAG;YACf,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,MAAM;SACX,CAAC;QACF,iBAAY,GAAG;YACf,UAAU,EAAE,KAAK;YACjB,qBAAqB,EAAE,0DAA0D;YACjF,yBAAyB,EAAE,8DAA8D;SACxF;KACA;;oFAdY,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB;AAmB/B;;GAEG;AAGI,MAAM,sBAAsB;IADnC;QAGA,YAAO,GAAG;YACV,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;YACtB,gBAAgB,EAAE,kBAAkB;YACpC,WAAW,EAAE,mBAAmB;YAChC,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;SACX;KACA;;4FApBY,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB;AAyBnC;;GAEG;AAGI,MAAM,qBAAqB;IADlC;QAGA,UAAK,GAAG;YACR,YAAY,EAAE,cAAc;SAC3B,CAAC;QACF,aAAQ,GAAG;YACX,iBAAiB,EAAE;gBACnB,UAAU,EAAE,6BAA6B;gBACzC,cAAc,EAAE,qCAAqC;aACpD;YACD,iBAAiB,EAAE;gBACnB,OAAO,EAAE,mBAAmB;gBAC5B,SAAS,EAAE,mCAAmC;aAC7C;SACA,CAAC;QACF,YAAO,GAAG;YACV,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,aAAa;YAC1B,YAAY,EAAE,cAAc;YAC5B,UAAU,EAAE,YAAY;YACxB,WAAW,EAAE,aAAa;YAC1B,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;SACnB;KACA;;0FA7BY,qBAAqB;sHAArB,qBAAqB,WAArB,qBAAqB","sources":["./$_lazy_route_resources|lazy|groupOptions: {}|namespace object","./app/themes/classic/boot.ts","./app/themes/classic/directives/cache-bust-source.directive.ts","./app/themes/classic/directives/image-cache-bust.directive.ts","./app/themes/classic/directives/image-cache-bust.module.ts","./app/themes/classic/directives/no-autocomplete.directive.ts","./app/themes/classic/directives/ui-directives.module.ts","./app/themes/classic/environments/environment.ts","./app/themes/classic/helpers/MathUtils.ts","./app/themes/classic/helpers/ProductAmountAdapter.ts","./app/themes/classic/helpers/ProductAmountCartAdapter.ts","./app/themes/classic/helpers/cookie.helper.ts","./app/themes/classic/helpers/numeric.helper.ts","./app/themes/classic/helpers/scroll.helper.ts","./app/themes/classic/helpers/storage.interceptor.ts","./app/themes/classic/helpers/string.helper.ts","./app/themes/classic/interceptors/integration.service.ts","./app/themes/classic/interceptors/main.interceptor.ts","./app/themes/classic/interfaces/general.ts","./app/themes/classic/modules/account-menu/account-menu.service.ts","./app/themes/classic/modules/account-menu/common.ts","./app/themes/classic/modules/account/dialogs/change-password-dialog.component.ts","./app/themes/classic/modules/account/dialogs/change-password-dialog.html","./app/themes/classic/modules/address/credentials.component.ts","./app/themes/classic/tpl/credentials.html","./app/themes/classic/modules/alert/alert.component.ts","./app/themes/classic/modules/alert/alert.component.html","./app/themes/classic/modules/alert/alert.module.ts","./app/themes/classic/modules/app/app.component.ts","./app/themes/classic/tpl/app.html","./app/themes/classic/modules/app/app.module.ts","./app/themes/classic/modules/app/app.routes.ts","./app/themes/classic/modules/articles/article-list-filter.component.ts","./app/themes/classic/modules/articles/article-list-filter.html","./app/themes/classic/modules/articles/article-list-item.component.ts","./app/themes/classic/modules/articles/article-list-item.html","./app/themes/classic/modules/articles/article-list-menu.component.ts","./app/themes/classic/modules/articles/article-list-menu.html","./app/themes/classic/modules/articles/article-list-related.component.ts","./app/themes/classic/modules/articles/article-list-related.html","./app/themes/classic/modules/articles/article-list.component.ts","./app/themes/classic/modules/articles/article-list.html","./app/themes/classic/modules/articles/article-list.module.ts","./app/themes/classic/modules/articles/article-main-menu.component.ts","./app/themes/classic/tpl/article-main-menu.html","./app/themes/classic/modules/articles/article-news.component.ts","./app/themes/classic/tpl/article-news.html","./app/themes/classic/modules/articles/article.module.ts","./app/themes/classic/modules/articles/article.service.ts","./app/themes/classic/modules/availability/availability.component.ts","./app/themes/classic/modules/availability/availability.html","./app/themes/classic/modules/availability/availability.module.ts","./app/themes/classic/modules/banner-stripe/banner-stripe.component.ts","./app/themes/classic/modules/banner-stripe/banner-stripe.module.ts","./app/themes/classic/modules/banner-stripe/category-banner.component.ts","./app/themes/classic/modules/banner-stripe/category-banner.component.html","./app/themes/classic/modules/banner-stripe/index-banner.component.ts","./app/themes/classic/modules/banner-stripe/index-banner.component.html","./app/themes/classic/modules/banner-stripe/small-banner.component.ts","./app/themes/classic/modules/banner-stripe/small-banner.html","./app/themes/classic/modules/breadcrumbs/breadcrumb.component.ts","./app/themes/classic/tpl/breadcrumb.html","./app/themes/classic/modules/breadcrumbs/breadcrumbs.module.ts","./app/themes/classic/modules/cart-indicator/cart-indicator.component.ts","./app/themes/classic/tpl/cart-indicator.html","./app/themes/classic/modules/cart-indicator/cart-indicator.module.ts","./app/themes/classic/modules/cart-modal/cart-change-modal.component.ts","./app/themes/classic/tpl/cart-change-modal.html","./app/themes/classic/modules/cart-modal/cart-change-modal.module.ts","./app/themes/classic/modules/cart/cart-token.service.ts","./app/themes/classic/modules/cart/cart.service.ts","./app/themes/classic/modules/category-filter/category-filter.component.ts","./app/themes/classic/modules/category-filter/category-filter.html","./app/themes/classic/modules/category-filter/category-filter.module.ts","./app/themes/classic/modules/category-list/category-list-root.component.ts","./app/themes/classic/modules/category-list/category-list-root.html","./app/themes/classic/modules/category-list/category-list.component.ts","./app/themes/classic/tpl/category-list.html","./app/themes/classic/modules/category-list/category-list.module.ts","./app/themes/classic/modules/category/category-best-selling.component.ts","./app/themes/classic/tpl/category-best-selling.html","./app/themes/classic/modules/category/category-menu.component.ts","./app/themes/classic/tpl/category-menu.html","./app/themes/classic/modules/category/category-root.component.ts","./app/themes/classic/modules/category/category-root.html","./app/themes/classic/modules/category/category.component.ts","./app/themes/classic/tpl/category.html","./app/themes/classic/modules/category/category.module.ts","./app/themes/classic/modules/category/interfaces.ts","./app/themes/classic/modules/cookie-warning/cookie-warning.component.ts","./app/themes/classic/tpl/cookie-warning.html","./app/themes/classic/modules/cookie-warning/cookie-warning.module.ts","./app/themes/classic/modules/cookies-consent/common.ts","./app/themes/classic/modules/cookies-consent/cookie-consent-modal.component.ts","./app/themes/classic/modules/cookies-consent/cookie-consent-modal.html","./app/themes/classic/modules/cookies-consent/cookies-consent.component.ts","./app/themes/classic/tpl/cookie-consent.html","./app/themes/classic/modules/cookies-consent/cookies-consent.module.ts","./app/themes/classic/modules/cookies-consent/cookies-consent.service.ts","./app/themes/classic/modules/cookies-consent/cookies-list.component.ts","./app/themes/classic/tpl/cookies-list.html","./app/themes/classic/modules/cookies-consent/js-scripts.component.ts","./app/themes/classic/modules/culture/culture.component.ts","./app/themes/classic/modules/culture/culture.html","./app/themes/classic/modules/culture/culture.module.ts","./app/themes/classic/modules/delivery-payment/delivery-payment.service.ts","./app/themes/classic/modules/distributor-box/distributor-box.component.ts","./app/themes/classic/modules/distributor-box/distributor-box.html","./app/themes/classic/modules/distributor-box/distributor-box.module.ts","./app/themes/classic/modules/experience/experience.component.ts","./app/themes/classic/modules/experience/experience.html","./app/themes/classic/modules/experience/experience.module.ts","./app/themes/classic/modules/fall-back-captcha/fall-back-captcha.dialog.ts","./app/themes/classic/modules/fall-back-captcha/fall-back-captcha.dialog.html","./app/themes/classic/modules/fall-back-captcha/fall-back-captcha.module.ts","./app/themes/classic/modules/flex-suggest/flex-suggest-list.component.ts","./app/themes/classic/tpl/flex-suggest-list.html","./app/themes/classic/modules/flex-suggest/flex-suggest.component.ts","./app/themes/classic/tpl/flex-suggest.html","./app/themes/classic/modules/flex-suggest/flex-suggest.module.ts","./app/themes/classic/modules/forgotten-password/forgotten-password-form.component.ts","./app/themes/classic/modules/forgotten-password/forgotten-password-form.html","./app/themes/classic/modules/forgotten-password/forgotten-password-form.module.ts","./app/themes/classic/modules/general-dialog/common.ts","./app/themes/classic/modules/general-dialog/general-dialog-config.ts","./app/themes/classic/modules/general-dialog/general-dialog-insertion.directive.ts","./app/themes/classic/modules/general-dialog/general-dialog.component.ts","./app/themes/classic/tpl/general-dialog.html","./app/themes/classic/modules/general-dialog/general-dialog.module.ts","./app/themes/classic/modules/general-dialog/general-dialog.service.ts","./app/themes/classic/modules/google-map/interfaces/GoogleMapSettings.ts","./app/themes/classic/modules/helper-components/helper-components.module.ts","./app/themes/classic/modules/helper-components/last.component.ts","./app/themes/classic/modules/innovation/innovation.component.ts","./app/themes/classic/modules/innovation/innovation.html","./app/themes/classic/modules/innovation/innovation.module.ts","./app/themes/classic/modules/inspiration-box/inspiration-box.component.ts","./app/themes/classic/modules/inspiration-box/inspiration-box.html","./app/themes/classic/modules/inspiration-box/inspiration-box.module.ts","./app/themes/classic/modules/landing-pages/available-landing-pages.component.ts","./app/themes/classic/modules/landing-pages/available-landing-pages.html","./app/themes/classic/modules/landing-pages/available-landing-pages.module.ts","./app/themes/classic/modules/login/login-dialog.component.ts","./app/themes/classic/tpl/login-dialog.html","./app/themes/classic/modules/login/login-form.component.ts","./app/themes/classic/tpl/login-form.html","./app/themes/classic/modules/login/login.component.ts","./app/themes/classic/tpl/login.html","./app/themes/classic/modules/login/login.module.ts","./app/themes/classic/modules/login/user-menu-dialog/user-menu-dialog.component.ts","./app/themes/classic/modules/login/user-menu-dialog/user-menu-dialog.html","./app/themes/classic/modules/luigi-suggest/luigi-suggest.component.ts","./app/themes/classic/tpl/luigi-suggest.html","./app/themes/classic/modules/luigi-suggest/luigi-suggest.module.ts","./app/themes/classic/modules/menu/common.ts","./app/themes/classic/modules/menu/menu.component.ts","./app/themes/classic/tpl/menu.html","./app/themes/classic/modules/menu/menu.module.ts","./app/themes/classic/modules/newsletters/newsletter-registration.component.ts","./app/themes/classic/tpl/newsletter-registration.html","./app/themes/classic/modules/newsletters/newsletter-registration.module.ts","./app/themes/classic/modules/notify-stripe/notify-stripe.component.ts","./app/themes/classic/tpl/notify-stripe.html","./app/themes/classic/modules/notify-stripe/notify-stripe.module.ts","./app/themes/classic/modules/page-hero/page-hero.component.ts","./app/themes/classic/tpl/page-hero.html","./app/themes/classic/modules/page-hero/page-hero.module.ts","./app/themes/classic/modules/pagination/pagination-append.component.ts","./app/themes/classic/modules/pagination/pagination-append.html","./app/themes/classic/modules/pagination/pagination-prevnext.component.ts","./app/themes/classic/modules/pagination/pagination-prevnext.html","./app/themes/classic/modules/pagination/pagination.component.ts","./app/themes/classic/modules/pagination/pagination.html","./app/themes/classic/modules/pagination/pagination.module.ts","./app/themes/classic/modules/paginator/common.ts","./app/themes/classic/modules/paginator/paginator.component.ts","./app/themes/classic/tpl/paginator.html","./app/themes/classic/modules/paginator/paginator.module.ts","./app/themes/classic/modules/pipe/cropHtml.ts","./app/themes/classic/modules/pipe/custom-pipes.module.ts","./app/themes/classic/modules/pipe/elipsis.pipe.ts","./app/themes/classic/modules/pipe/stockAvailability.ts","./app/themes/classic/modules/pipe/webp.pipe.ts","./app/themes/classic/modules/preloader/preloader.component.ts","./app/themes/classic/tpl/preloader.html","./app/themes/classic/modules/preloader/preloader.module.ts","./app/themes/classic/modules/price-filter/price-filter.component.ts","./app/themes/classic/tpl/price-filter.html","./app/themes/classic/modules/price-filter/price-filter.module.ts","./app/themes/classic/modules/producer-filter/producer-filter.component.ts","./app/themes/classic/tpl/producer-filter.html","./app/themes/classic/modules/producer-filter/producer-filter.module.ts","./app/themes/classic/modules/product-amount/product-amount-cart.pipe.ts","./app/themes/classic/modules/product-amount/product-amount.module.ts","./app/themes/classic/modules/product-amount/product-amount.pipe.ts","./app/themes/classic/modules/product-amount/product-amount/product-amount.component.ts","./app/themes/classic/modules/product-amount/product-amount/product-amount.component.html","./app/themes/classic/modules/product-amount/product-variant-amount.pipe.ts","./app/themes/classic/modules/product-box/product-box.component.ts","./app/themes/classic/tpl/product-box.html","./app/themes/classic/modules/product-box/product-box.module.ts","./app/themes/classic/modules/product-color-parameter-filter/product-color-parameter-filter.component.ts","./app/themes/classic/tpl/product-color-parameter-filter.html","./app/themes/classic/modules/product-color-parameter-filter/product-color-parameter-filter.module.ts","./app/themes/classic/modules/product-color-parameter-filter/product-sub-color-parameter-filter.component.ts","./app/themes/classic/tpl/product-sub-color-parameter-filter.html","./app/themes/classic/modules/product-flags-filter/product-flags-filter.component.ts","./app/themes/classic/modules/product-flags-filter/product-flags-filter.html","./app/themes/classic/modules/product-flags-filter/product-flags-filter.module.ts","./app/themes/classic/modules/product-flags/product-flags.component.ts","./app/themes/classic/modules/product-flags/product-flags.html","./app/themes/classic/modules/product-flags/product-flags.module.ts","./app/themes/classic/modules/product-list/article-product-list.component.ts","./app/themes/classic/modules/product-list/article-product-list.html","./app/themes/classic/modules/product-list/product-list.component.ts","./app/themes/classic/tpl/product-list.html","./app/themes/classic/modules/product-list/product-list.module.ts","./app/themes/classic/modules/product-parameter-filter/common.ts","./app/themes/classic/modules/product-parameter-filter/product-parameter-filter.component.ts","./app/themes/classic/tpl/product-parameter-filter.html","./app/themes/classic/modules/product-parameter-filter/product-parameter-filter.module.ts","./app/themes/classic/modules/product-parameters-filter-active/CategoryPrameterMamager.ts","./app/themes/classic/modules/product-parameters-filter-active/product-parameters-filter-active.component.ts","./app/themes/classic/tpl/product-parameters-filter-active.html","./app/themes/classic/modules/product-parameters-filter-active/product-parameters-filter-active.module.ts","./app/themes/classic/modules/product-size-parameter-filter/parameter-slider.component.ts","./app/themes/classic/modules/product-size-parameter-filter/product-size-parameter-filter.component.ts","./app/themes/classic/tpl/product-size-parameter-filter.html","./app/themes/classic/modules/product-size-parameter-filter/product-size-parameters-filter.component.ts","./app/themes/classic/tpl/product-size-parameters-filter.html","./app/themes/classic/modules/product-size-parameter-filter/product-size-parameters-filter.module.ts","./app/themes/classic/modules/product-variants-parameters-filter/interfaces.ts","./app/themes/classic/modules/product-variants-parameters-filter/product-variants-parameters-filter.service.ts","./app/themes/classic/modules/product-variants/common.ts","./app/themes/classic/modules/product-variants/product-variant-list-item.component.ts","./app/themes/classic/modules/product-variants/product-variant-list-item.html","./app/themes/classic/modules/product-variants/product-variant-list.component.ts","./app/themes/classic/modules/product-variants/product-variant-list.html","./app/themes/classic/modules/product-variants/product-variants.component.ts","./app/themes/classic/modules/product-variants/product-variants.html","./app/themes/classic/modules/product-variants/product-variants.module.ts","./app/themes/classic/modules/responsive-menu-list/responsive-menu-list.component.ts","./app/themes/classic/tpl/responsive-menu-list.html","./app/themes/classic/modules/responsive-menu-list/responsive-menu-list.module.ts","./app/themes/classic/modules/select-box/param-select-box/param-select-box.component.ts","./app/themes/classic/modules/select-box/param-select-box/param-select-box.component.html","./app/themes/classic/modules/select-box/select-box-multi/select-box-multi.component.ts","./app/themes/classic/modules/select-box/select-box-multi/select-box-multi.component.html","./app/themes/classic/modules/select-box/select-box.module.ts","./app/themes/classic/modules/select-box/select-box/select-box.component.ts","./app/themes/classic/modules/select-box/select-box/select-box.component.html","./app/themes/classic/modules/settings-social/settings-social.component.ts","./app/themes/classic/tpl/settings-social.html","./app/themes/classic/modules/settings-social/settings-social.module.ts","./app/themes/classic/modules/settings/settings-aboutus.component.ts","./app/themes/classic/tpl/settings-aboutus.html","./app/themes/classic/modules/settings/settings-aboutus.module.ts","./app/themes/classic/modules/validation/compare-validator.directive.ts","./app/themes/classic/modules/validation/crn-validator.directive.ts","./app/themes/classic/modules/validation/validation-msg.ts","./app/themes/classic/tpl/validation-msg.html","./app/themes/classic/modules/validation/validation.module.ts","./app/themes/classic/modules/validation/vat-validator.directive.ts","./app/themes/classic/modules/wish-list/dialog/wish-list-delete-dilaog.component.ts","./app/themes/classic/modules/wish-list/dialog/wish-list-delete-dilaog.html","./app/themes/classic/modules/wish-list/wish-list-item.component.ts","./app/themes/classic/modules/wish-list/wish-list-item.html","./app/themes/classic/modules/wish-list/wish-list-link.component.ts","./app/themes/classic/modules/wish-list/wish-list-link.html","./app/themes/classic/modules/wish-list/wish-list-token.service.ts","./app/themes/classic/modules/wish-list/wish-list.module.ts","./app/themes/classic/services/category.service.ts","./app/themes/classic/services/client-cache-token.service.ts","./app/themes/classic/services/compare-products.service.ts","./app/themes/classic/services/credential-storage.service.ts","./app/themes/classic/services/data.service.ts","./app/themes/classic/services/digest.service.ts","./app/themes/classic/services/distributor.service.ts","./app/themes/classic/services/error.service.ts","./app/themes/classic/services/flex-captcha.service.ts","./app/themes/classic/services/global-error-handler.service.ts","./app/themes/classic/services/landing-page.service.ts","./app/themes/classic/services/menu.service.ts","./app/themes/classic/services/page-scroll.service.ts","./app/themes/classic/services/page-state-url.service.ts","./app/themes/classic/services/page-state.service.ts","./app/themes/classic/services/parameter.service.ts","./app/themes/classic/services/route-guard.service.ts","./app/themes/classic/services/search.service.ts","./app/themes/classic/services/settings.service.ts","./app/themes/classic/services/user.service.ts","./app/themes/classic/services/wish-list-service.ts","./app/themes/classic/shared-settings/shared-settings.ts"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';\r\nimport {AppModule} from './modules/app/app.module';\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n","import {Directive, ElementRef, Input, OnInit, Renderer2} from \"@angular/core\";\r\nimport {SettingsService} from \"../services/settings.service\";\r\n\r\n@Directive({\r\n selector: 'source'\r\n})\r\n\r\nexport class CacheBustSourceDirective implements OnInit {\r\n\r\n private _srcset: string;\r\n @Input() set srcset(value: string) {\r\n const sep = /\\?/.test(value) ? '&' : '?';\r\n this._srcset = value;\r\n this._srcset += `${sep}cbk=${this.seSvc.cacheBustKey}`;\r\n this.renderer.setAttribute(this.elRef.nativeElement, 'srcset', this._srcset);\r\n }\r\n\r\n get srcset(): string {\r\n return this._srcset;\r\n }\r\n\r\n constructor(private elRef: ElementRef, private renderer: Renderer2, private seSvc: SettingsService) {}\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, OnInit, Renderer2} from \"@angular/core\";\r\nimport {SettingsService} from \"../services/settings.service\";\r\n\r\n@Directive({\r\n selector: 'img'\r\n})\r\n\r\nexport class ImageCacheBustDirective implements OnInit {\r\n\r\n private _src: string;\r\n @Input() set src(value: string) {\r\n const sep = /\\?/.test(value) ? '&' : '?';\r\n this._src = value;\r\n this._src += `${sep}cbk=${this.seSvc.cacheBustKey}`;\r\n this.renderer.setAttribute(this.elRef.nativeElement, 'src', this._src);\r\n }\r\n\r\n get src(): string {\r\n return this._src;\r\n }\r\n\r\n constructor(private elRef: ElementRef, private renderer: Renderer2, private seSvc: SettingsService) {}\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ImageCacheBustDirective} from \"./image-cache-bust.directive\";\r\nimport {CacheBustSourceDirective} from \"./cache-bust-source.directive\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n ImageCacheBustDirective,\r\n CacheBustSourceDirective\r\n ],\r\n exports: [\r\n ImageCacheBustDirective,\r\n CacheBustSourceDirective\r\n ]\r\n})\r\n\r\nexport class ImageCacheBustModule {}\r\n","import {Directive, ElementRef, HostListener, Renderer2} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[noAutoComplete]'\r\n})\r\n\r\nexport class NoAutocompleteDirective {\r\n\r\n @HostListener('mouseenter') undoReadOnly() {\r\n if (!this.readOnlyUnDone) {\r\n this.rend.removeAttribute(this.elRef.nativeElement, 'readonly');\r\n this.rend.setAttribute(this.elRef.nativeElement, 'autocomplete', 'off');\r\n this.readOnlyUnDone = true;\r\n }\r\n\r\n }\r\n private readOnlyUnDone: boolean = false;\r\n\r\n constructor (private elRef: ElementRef, private rend: Renderer2) {\r\n this.rend.setAttribute(this.elRef.nativeElement, 'readonly', '');\r\n }\r\n}","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {NoAutocompleteDirective} from \"./no-autocomplete.directive\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n NoAutocompleteDirective\r\n ],\r\n exports: [\r\n NoAutocompleteDirective\r\n ]\r\n})\r\n\r\nexport class UiDirectivesModule {}","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n isPwa: false\r\n};\r\n\r\n/*\r\n * In development mode, for easier debugging, you can ignore zone related error\r\n * stack frames such as `zone.run`/`zoneDelegate.invokeTask` by importing the\r\n * below file. Don't forget to comment it out in production mode\r\n * because it will have a performance impact when errors are thrown\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","export class MathUtils {\r\n\r\n private static mult: number = 10000000;\r\n\r\n public static IsMultiple(left: number | string, right: number): boolean {\r\n if(typeof left === 'string') {\r\n left = parseFloat((left).replace(',', '.'));\r\n }\r\n\r\n if (right) {\r\n const a = left / right;\r\n const b = Math.round(a) * right;\r\n const c = Math.round(b * this.mult) === Math.round(left * this.mult);\r\n return c;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n public static Round(value: number, decimalPlaces: number) {\r\n const tmp = Math.pow(10, decimalPlaces);\r\n return Math.round(value * tmp) / tmp;\r\n }\r\n\r\n}","import {IProductBoxModel, ProductSelector} from \"../modules/product/common\";\r\nimport {IProductAmountSettings} from \"../modules/product-amount/interfaces/IProductAmountSettings\";\r\nimport {ProductVariantBriefSelector} from \"../interfaces/general\";\r\nimport {IWishListSelector} from \"../modules/wish-list/common\";\r\n\r\nexport class ProductAmountAdapter implements IProductAmountSettings {\r\n\r\n constructor(product: ProductSelector) {\r\n try {\r\n // this.Factor = product.variants[0].factor || 1;\r\n this.Factor = 1;\r\n this.MaxQuantity = product.maxQtyOrder;\r\n this.MinQuantity = product.minQtyOrder || 1;\r\n this.ProductId = product.variantId;\r\n this.Unit = product.unit?.shortCut;\r\n\r\n } catch {\r\n debugger;\r\n }\r\n }\r\n\r\n Factor: number;\r\n MaxQuantity: number;\r\n MinQuantity: number;\r\n ProductId: number;\r\n Unit: string;\r\n\r\n}\r\n\r\nexport class ProductVariantAmountAdapter implements IProductAmountSettings {\r\n\r\n constructor(product: ProductVariantBriefSelector) {\r\n this.Factor = product.factor ? product.factor : product.minQtyOrder > 1 ? 1 : product.minQtyOrder || 1;\r\n this.MaxQuantity = product.maxQtyOrder;\r\n this.MinQuantity = product.minQtyOrder || 1;\r\n this.ProductId = product.id;\r\n this.Unit = product.unit?.shortCut;\r\n }\r\n\r\n Factor: number;\r\n MaxQuantity: number;\r\n MinQuantity: number;\r\n ProductId: number;\r\n Unit: string;\r\n\r\n}\r\n\r\nexport class ProductBoxModelAmountAdapter implements IProductAmountSettings {\r\n\r\n constructor(product: IProductBoxModel) {\r\n this.Factor = product.factor ? product.factor : product.minQtyOrder > 1 ? 1 : product.minQtyOrder || 1;\r\n this.MaxQuantity = product.maxQtyOrder;\r\n this.MinQuantity = product.minQtyOrder || 1;\r\n this.ProductId = product.variantId;\r\n this.Unit = product.unit?.shortCut;\r\n }\r\n\r\n Factor: number;\r\n MaxQuantity: number;\r\n MinQuantity: number;\r\n ProductId: number;\r\n Unit: string;\r\n\r\n}\r\n\r\nexport class WishlistAmountAdapter implements IProductAmountSettings {\r\n\r\n constructor(product: IWishListSelector) {\r\n this.Factor = product.variant.minQtyOrder ? product.variant.minQtyOrder > 1 ? 1 : product.variant.minQtyOrder : 1;\r\n this.MaxQuantity = product.variant.maxQtyOrder;\r\n this.MinQuantity = product.variant.minQtyOrder || 1;\r\n this.ProductId = product.variant.id;\r\n this.Unit = product.variant.unit?.shortCut;\r\n }\r\n\r\n Factor: number;\r\n MaxQuantity: number;\r\n MinQuantity: number;\r\n ProductId: number;\r\n Unit: string;\r\n\r\n}","import {IProductAmountSettings} from \"../modules/product-amount/interfaces/IProductAmountSettings\";\r\nimport { CartItemSelectorFull } from \"../modules/cart/common\";\r\n\r\nexport class ProductAmountCartAdapter implements IProductAmountSettings {\r\n\r\n constructor(product: CartItemSelectorFull) {\r\n this.Factor = product.productDetail.factor || 1;\r\n this.MaxQuantity = product.productDetail.maxQtyOrder;\r\n this.MinQuantity = product.productDetail.minQtyOrder || 1;\r\n this.ProductId = product.productDetail.id;\r\n this.Unit = product.productDetail.unit?.shortCut;\r\n }\r\n\r\n Factor: number;\r\n MaxQuantity: number;\r\n MinQuantity: number;\r\n ProductId: number;\r\n Unit: string;\r\n\r\n}","/**\r\n * @description\r\n * Basic cookie manipulation since Angular 2 doesn't have it implemented\r\n */\r\n\r\n// todo: write UT for this module\r\nimport {StringIndexedObject} from \"../interfaces/general\";\r\n\r\n/**\r\n * @description\r\n * Set up the cookie\r\n * @param cname - cookie name\r\n * @param cvalue - cookie value\r\n * @param exhours - number of hours until expiration\r\n */\r\nexport function setCookie(cname: string, cvalue: string, exhours?: number): void {\r\n let expires: string = '';\r\n if (exhours) {\r\n let d = new Date();\r\n d.setTime(d.getTime() + (exhours * 60 * 60 * 1000));\r\n expires = \"expires=\" + d.toUTCString();\r\n }\r\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n}\r\n\r\n/**\r\n * @description\r\n * Get the value of the cookie by given name\r\n * @param cname - name of the cookie\r\n * @returns {string} - tha value of the cookie\r\n */\r\nexport function getCookie(cname: string): string {\r\n let name = cname + \"=\";\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function getCookies(): StringIndexedObject {\r\n const ret: StringIndexedObject = {};\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n const eqIndex = c.indexOf('=');\r\n ret[c.substring(0, eqIndex)] = c.substring(eqIndex, c.length);\r\n }\r\n return ret;\r\n}\r\n\r\n/**\r\n * @description\r\n * Deletes the cookie given by its name\r\n * @param cname - cookie name\r\n */\r\nexport function deleteCookie(cname: string): void {\r\n setCookie(cname, '')\r\n}\r\n\r\nexport function saveToSession(key: string, obj: any): void {\r\n let s = JSON.stringify(obj);\r\n sessionStorage.setItem(key, s)\r\n}\r\n\r\nexport function removeFromSession(key: string): void {\r\n sessionStorage.removeItem(key);\r\n}\r\n\r\n\r\nexport function loadFromSession(key: string): any {\r\n let s = sessionStorage.getItem(key);\r\n if (!s || s == 'undefined') return undefined;\r\n return JSON.parse(s)\r\n}\r\n\r\n\r\nexport function saveToLocalStorage(key: string, obj: any): void {\r\n let s = JSON.stringify(obj);\r\n localStorage.setItem(key, s)\r\n}\r\n\r\nexport function loadFromLocalStorage(key: string): any {\r\n let s = localStorage.getItem(key);\r\n if (!s || s == 'undefined') return undefined;\r\n return JSON.parse(s)\r\n}\r\n\r\nexport function removeFromLocalStorage(key: string): void {\r\n localStorage.removeItem(key);\r\n}\r\n","export class Numeric {\r\n public static round(number: number, precision: number): number {\r\n let pow = Math.pow(10, precision);\r\n return (Math.round(number*pow)/pow);\r\n }\r\n\r\n public static parseFloatCulture(value: any, cultureId?: number): number | null {\r\n if (typeof(value) === 'number') { return value; }\r\n if (typeof(value) !== 'string') { return null; }\r\n\r\n if (value === '') {\r\n return null;\r\n }\r\n let res = NaN;\r\n switch (cultureId) {\r\n case 34:\r\n res = parseFloat(value.toString().replace(/[\\s]/g,'').replace(/,/g, '.'));\r\n break;\r\n default:\r\n res = parseFloat(value);\r\n break;\r\n }\r\n\r\n if (Number.isNaN(res)) {\r\n return null;\r\n }\r\n\r\n return res;\r\n }\r\n\r\n public static toString(value: number, cultureId?: number): string {\r\n switch (cultureId) {\r\n case 34:\r\n let str = '' + value;\r\n str = str.replace(/\\./g, ',');\r\n return str;\r\n default:\r\n return '' + value;\r\n }\r\n }\r\n\r\n public static isMultiple(cnt: number, factor: number): boolean {\r\n if (!factor) return true;\r\n return Math.round(cnt / factor) / (1 / factor) === cnt;\r\n }\r\n\r\n public static isNumber(n: any): boolean {\r\n return typeof(n) === 'number';\r\n }\r\n}","declare let $: any;\r\n\r\nexport class ScrollHelper {\r\n private static time: number = 500;\r\n\r\n private static scrollIsActive: boolean;\r\n\r\n static scrollToAnchor(where: string): void {\r\n\r\n if (!where) {\r\n return;\r\n ;\r\n }\r\n\r\n if (ScrollHelper.scrollIsActive) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n\r\n let $where: any = null;\r\n if (where.startsWith('.') || where.startsWith('$')) {\r\n $where = $(`${where}`);\r\n } else {\r\n $where = $(`${where}`);\r\n if (!$where || $where.length == 0) {\r\n $where = $(`.${where}`);\r\n }\r\n }\r\n\r\n if ($where) {\r\n const offset = $where.offset();\r\n if (offset) {\r\n ScrollHelper.scroll(offset.top);\r\n }\r\n }\r\n\r\n }, 0);\r\n }\r\n\r\n static scrollToAnchorOffset(where: string, diff: number = 0): void {\r\n\r\n if (!where) {\r\n return;\r\n }\r\n\r\n if (ScrollHelper.scrollIsActive) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n\r\n let $where: any = null;\r\n if (where.startsWith('.') || where.startsWith('$')) {\r\n $where = $(`${where}`);\r\n } else {\r\n $where = $(`${where}`);\r\n if (!$where || $where.length == 0) {\r\n $where = $(`.${where}`);\r\n }\r\n }\r\n\r\n if ($where) {\r\n const offset = $where.offset();\r\n if (offset) {\r\n ScrollHelper.scroll(offset.top + diff);\r\n }\r\n }\r\n\r\n }, 0);\r\n }\r\n\r\n static scrollUp(): void {\r\n ScrollHelper.scroll(0);\r\n }\r\n\r\n static scrollToOffset(offset: number): void {\r\n ScrollHelper.scroll(offset);\r\n }\r\n\r\n private static scroll(offset: number): void {\r\n if (ScrollHelper.scrollIsActive) {\r\n return;\r\n }\r\n ScrollHelper.scrollIsActive = true;\r\n $(\"html,body\").animate({scrollTop: offset}, ScrollHelper.time, null, () => {\r\n ScrollHelper.scrollIsActive = false;\r\n });\r\n }\r\n}\r\n\r\n","import {CookiesConsentService} from \"../modules/cookies-consent/cookies-consent.service\";\r\n\r\nexport class StorageInterceptor {\r\n constructor() {\r\n\r\n }\r\n\r\n static hijackLocalStorage(ccSvc: CookiesConsentService): void {\r\n if (!ccSvc.isStorageInterceptingActive) {\r\n return;\r\n }\r\n\r\n const originalLocalStorageSetItem: any = window.localStorage.setItem.bind(window.localStorage);\r\n const newSetItem = function (key: string, value: string) {\r\n ccSvc.onLocalStorageSetItem(key);\r\n originalLocalStorageSetItem(key, value);\r\n };\r\n newSetItem.bind(window);\r\n window.localStorage.setItem = newSetItem;\r\n }\r\n\r\n static hijackSessionStorage(ccSvc: CookiesConsentService): void {\r\n if (!ccSvc.isStorageInterceptingActive) {\r\n return;\r\n }\r\n\r\n const originalSessionStorageSetItem: any = window.sessionStorage.setItem.bind(window.sessionStorage);\r\n const newSetItem = function (key: string, value: string) {\r\n ccSvc.onSessionStorageSetItem(key);\r\n originalSessionStorageSetItem(key, value);\r\n };\r\n newSetItem.bind(window);\r\n window.sessionStorage.setItem = newSetItem;\r\n }\r\n}","declare let StringView: any;\r\n\r\nexport class KeyValuePair {\r\n\r\n key: string;\r\n value: string;\r\n\r\n constructor(k: string, v: string) {\r\n this.key = k;\r\n this.value = v;\r\n }\r\n}\r\n\r\nexport function parseMultiPartString(digest: string): Array {\r\n\r\n digest = digest.replace(/Digest /i, '').replace(/\\s*/g, '');\r\n\r\n let kvpArray = digest.split(',');\r\n let result: Array = [];\r\n\r\n function fillResult(v: string, a: Array) {\r\n let tmp = v.split('=');\r\n a.push(new KeyValuePair(tmp[0], tmp[1].replace(/\"/g, '')))\r\n }\r\n\r\n kvpArray.forEach(v => fillResult(v, result));\r\n\r\n return result;\r\n}\r\n\r\nexport function isRouteSecured(theRoute: string): boolean {\r\n return /^\\/account.*/.test(theRoute);\r\n}\r\n\r\nexport function stripHtml(input: string): string {\r\n if (!input) {\r\n return null;\r\n }\r\n const regex = /(<([^>]+)>)/ig;\r\n return input.replace(regex, '');\r\n}\r\n\r\nexport function isLocalImagePath(input: string): boolean {\r\n return /(.jpg|.jpeg|.ico|.png|.gif|.webp)/i.test(input);\r\n}\r\n\r\nexport function toQueryStringParam(obj: T) {\r\n return encodeURIComponent(new StringView(JSON.stringify(obj)).toBase64())\r\n}\r\n","/**\r\n * @description\r\n * serves as a bridge between {@link SettingsService} and {@link MainInterceptor}\r\n * reason: avoid circular dependency\r\n */\r\nimport {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {HttpRegionalSettings} from \"../interfaces/general\";\r\nimport {SharedAppSettings} from \"../shared-settings/shared-settings\";\r\n\r\n@Injectable()\r\nexport class IntegrationService {\r\n\r\n get httpRegional(): HttpRegionalSettings {\r\n return this._httpRegional;\r\n }\r\n\r\n set httpRegional(value: HttpRegionalSettings) {\r\n this._httpRegional = value;\r\n }\r\n\r\n private _httpRegional: HttpRegionalSettings;\r\n\r\n anyCall: EventEmitter = new EventEmitter();\r\n\r\n constructor(private saSvc: SharedAppSettings) {\r\n\r\n this.httpRegional = {\r\n currencyId: this.saSvc.Defaults.CurrencyId,\r\n cultureId: this.saSvc.Defaults.CultureId\r\n };\r\n }\r\n\r\n emitAnyCall(): void {\r\n this.anyCall.emit();\r\n }\r\n\r\n}\r\n","import {\r\n HttpErrorResponse,\r\n HttpEvent,\r\n HttpHandler,\r\n HttpInterceptor,\r\n HttpRequest, HttpResponse\r\n} from \"@angular/common/http\";\r\nimport {Observable} from \"rxjs\";\r\nimport {Injectable} from \"@angular/core\";\r\nimport {IntegrationService} from \"./integration.service\";\r\nimport {HttpRegionalSettings} from \"../interfaces/general\";\r\nimport {CredentialStorage} from \"../services/credential-storage.service\";\r\nimport { tap } from 'rxjs/operators';\r\nimport {Router} from \"@angular/router\";\r\nimport {isRouteSecured} from \"../helpers/string.helper\";\r\nimport {SettingsService} from \"../services/settings.service\";\r\nimport {CartTokenService} from \"../modules/cart/cart-token.service\";\r\nimport {ClientCacheTokenService} from \"../services/client-cache-token.service\";\r\n\r\ndeclare let clientCacheToken: string;\r\n\r\n@Injectable()\r\nexport class MainInterceptor implements HttpInterceptor {\r\n\r\n private settings: HttpRegionalSettings;\r\n\r\n constructor(private iSvc: IntegrationService,\r\n private router: Router,\r\n private seSvc: SettingsService,\r\n private cartTokenSvc:CartTokenService,\r\n private cacheTokenSvc: ClientCacheTokenService) {\r\n this.settings = this.iSvc.httpRegional;\r\n }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n this.settings = this.iSvc.httpRegional;\r\n let newUrl;\r\n\r\n if (req.method === 'GET') {\r\n newUrl = /\\?/.test(req.url)\r\n ? `${req.url}&${this.getInterceptedUrlPart()}`\r\n : `${req.url}?${this.getInterceptedUrlPart()}`;\r\n } else newUrl = req.url;\r\n\r\n let cartToken = this.cartTokenSvc.cartToken;\r\n\r\n const duplicate = req.clone({\r\n headers: req.headers\r\n .append('F-CC', `cu:${this.settings.cultureId},cy:${this.settings.currencyId}`)\r\n .append('cart-token', cartToken || ''),\r\n url: newUrl\r\n });\r\n\r\n this.iSvc.emitAnyCall();\r\n\r\n return next.handle(duplicate)\r\n .pipe(\r\n tap((evt) => {\r\n if (evt instanceof (HttpResponse)) {\r\n const headers = evt.headers;\r\n const cct = headers?.getAll('X-ClientCacheToken');\r\n if (cct && cct.length && cct[0]) {\r\n clientCacheToken = cct[0];\r\n }\r\n }\r\n },\r\n (err: any) => {\r\n /*\r\n * PA handling\r\n */\r\n if (err instanceof HttpErrorResponse && (err).status === 400 && (err).error === 'PA_FAILED') {\r\n location.href = '/pa';\r\n }\r\n /**\r\n * server side kick-off scenario\r\n * this is a safety catch when for some reason the client did not react to token expiration\r\n * but the server rejected the token and throws 403 back\r\n */\r\n if (!/api\\/login/.test(req.url) && err instanceof HttpErrorResponse && (err).status === 403) {\r\n CredentialStorage.removeAuthInfo();\r\n\r\n let fwd = this.router.url;\r\n let url;\r\n\r\n if (isRouteSecured(fwd)) {\r\n url = fwd ? `/upozorneni?fwd=${fwd}` : '/upozorneni';\r\n } else {\r\n url = '/';\r\n }\r\n\r\n this.router.navigateByUrl(url)\r\n .then(() => {\r\n location.reload();\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n private getInterceptedUrlPart(): string {\r\n const clientCacheToken: string = this.cacheTokenSvc.getToken();\r\n\r\n const did = this.seSvc.activeUrlInfo\r\n ? this.seSvc.activeUrlInfo.id\r\n : 0;\r\n return `cu=${this.settings.cultureId}&cy=${this.settings.currencyId}&did=${did}&lin=${CredentialStorage.userLoggedIn}&cct=${clientCacheToken}`;\r\n }\r\n}\r\n","import {OnDestroy, OnInit, Directive} from \"@angular/core\";\r\nimport {DataService} from \"../services/data.service\";\r\nimport {SettingsService} from \"../services/settings.service\";\r\nimport {IPriceInfo, ProductSelector, ProductVariantDetailSelector} from \"../modules/product/common\";\r\nimport {SafeHtml} from \"@angular/platform-browser\";\r\nimport {CredentialStorage} from \"../services/credential-storage.service\";\r\nimport {ProductFlagSelector, SeoInfoSelector} from \"../modules/category/interfaces\";\r\nimport {HttpErrorResponse} from \"@angular/common/http\";\r\nimport {ArticleTemplate} from \"../modules/article-templates/common\";\r\nimport {loadFromLocalStorage, saveToLocalStorage} from \"../helpers/cookie.helper\";\r\n\r\ndeclare let sha256: any;\r\n\r\n/**\r\n * @description\r\n * A class for storing authorization data in localStorage\r\n * Can be instantiated via:\r\n * - new ai()\r\n * - ai.fromString()\r\n * */\r\nexport interface AuthInfo {\r\n userName: string;\r\n displayName: string;\r\n loggedIn: boolean;\r\n validTo: string;\r\n}\r\n\r\n/**\r\n * @description\r\n * Interfaces for passing proper request values between function calls\r\n * Just to have one param instead of 3 or more\r\n */\r\nexport interface SettingItem {\r\n Key: string;\r\n Value: any;\r\n}\r\n\r\nexport interface UserInfo {\r\n userDisplayName: string;\r\n}\r\n\r\n/**\r\n * @description\r\n * To have some structure of the emitted object to count with\r\n * Possible values for \"type\" are:\r\n * 'info'\r\n * 'error'\r\n */\r\nexport interface LoginEmitterMessage {\r\n type: string;\r\n message: string;\r\n status?: number;\r\n data?: HttpErrorResponse;\r\n routeToIndex?: boolean;\r\n}\r\n\r\nexport interface CategoryItemSelector {\r\n id: number;\r\n parentId: number;\r\n level: number;\r\n displayName: string;\r\n idPath: string;\r\n seoUrl: string;\r\n imagePath: string;\r\n imageAlt: string;\r\n description: string | SafeHtml;\r\n bcInfo: BreadCrumbInfo[];\r\n articles: ArticleBriefSelector[];\r\n subcategories: CategoryItemSelector[];\r\n catSeoInfo: SeoInfoSelector;\r\n zboziCategoryText: string;\r\n isVirtual: boolean;\r\n filePath: string;\r\n showProductFinder: boolean;\r\n}\r\n\r\n/**\r\n * @description\r\n * Defines culture properties\r\n */\r\nexport interface Culture {\r\n code: string;\r\n name: string;\r\n cultureId: number;\r\n currencyCode: string;\r\n currencySymbol: string;\r\n translationKey: string;\r\n htmlLangAttribute: string;\r\n}\r\n\r\nexport interface Country {\r\n id: number;\r\n name: string;\r\n code2L: string;\r\n}\r\n\r\nexport interface ArticleBaseSelector {\r\n name: string;\r\n title: string;\r\n seoUrl: string;\r\n redirectUrl?: string;\r\n newWin?: boolean;\r\n code: string;\r\n imagePreviewPath: string;\r\n imagePreviewOrigPath: string;\r\n}\r\n\r\nexport interface ArticleBaseWithChildrenSelector extends ArticleBaseSelector {\r\n childArticles: Array;\r\n}\r\n\r\nexport interface ArticleBriefSelector extends ArticleBaseWithChildrenSelector {\r\n articleId: number;\r\n order: number;\r\n position: number;\r\n code: string;\r\n dateCreated: any;\r\n imagePath: string;\r\n imageTitle: string;\r\n imagePreviewTitle: string;\r\n videoPath: string;\r\n annotation: string | SafeHtml;\r\n parentArticleId?: number;\r\n parentArticleCode?: string;\r\n parentArticleName?: string;\r\n childArticles: Array;\r\n category?: CategoryInfo;\r\n readMinutes?: number;\r\n showBanner?: boolean;\r\n showExperience: boolean;\r\n}\r\n\r\nexport interface ArticleSelector extends ArticleBriefSelector {\r\n title: string;\r\n body: string | SafeHtml;\r\n extraData: string;\r\n dateLastUpdated?: any;\r\n seoDescription: string;\r\n creatorUserName: string;\r\n lastUpdatedUserName: string;\r\n articleIDPath: string;\r\n isSiteMap: boolean;\r\n breadCrumbInfo?: BreadCrumbInfo[];\r\n\r\n products?: ProductVariantDetailSelector[];\r\n templates?: ArticleTemplate[];\r\n}\r\n\r\nexport interface SearchRequest extends PageRequest {\r\n phrase: string;\r\n quickType?: boolean;\r\n itemType?: SearchItemTYpe\r\n requestType: ProductRequestType;\r\n}\r\n\r\nexport type SearchItemTYpe = 'product' | 'article' | '';\r\n\r\n\r\nexport enum ProductRequestType {\r\n VariantKey = 1,\r\n Variant = 2,\r\n ByData = 3\r\n}\r\n\r\nexport interface PageRequest {\r\n pageSize: number;\r\n pageIndex: number;\r\n}\r\n\r\nexport interface SearchSelector {\r\n categories: CategoryItemSelector[];\r\n products: Array;\r\n articles: Array;\r\n productCount: number;\r\n articleCount: number;\r\n categoryCount: number;\r\n}\r\n\r\n\r\n/**\r\n * Collection of available validation patterns used in Settings interface\r\n */\r\nexport interface ValidationPatterns {\r\n email: RegExp;\r\n phone: IntRegExpDictionary;\r\n naturalNumber: RegExp;\r\n decimalNumber: RegExp;\r\n formattedNaturalNumber: RegExp;\r\n zipCodeCz: RegExp;\r\n}\r\n\r\nexport interface DecimalSettings {\r\n ProductBox: number;\r\n Detail: number;\r\n Wishlist: number;\r\n Basket: number;\r\n Compare: number;\r\n Whisperer: number;\r\n}\r\n\r\nexport interface CurrencyDict {\r\n [key: number]: string;\r\n}\r\n\r\n/**\r\n * @description\r\n * Structure of the application settings which are stored in app/services/settings.service.ts.\r\n * This enables usage of settings via dot convention both in ts and html files.\r\n * If you add a setting to the json file, please add it to this interface as well.\r\n */\r\nexport interface Settings {\r\n preAuthToLocal: boolean; // this makes the pre-authentication less agressive but less secure\r\n preAuthLocalExpiration: number;\r\n cultures: Array;\r\n currencies: CurrencyDict;\r\n currencyCodes: CurrencyDict;\r\n validationPatterns: ValidationPatterns;\r\n countries: Country[];\r\n pageSizes: any[];\r\n localDomain: string;\r\n currentServerUrl: string;\r\n decimalSettings: DecimalSettings;\r\n shopSeo: ShopSeoSelector;\r\n routesWithDefaultSeo: any[];\r\n assetPathPrefix: string;\r\n newImageServerUrl: string;\r\n noIndexRoutes: string[];\r\n termsAndConditions: { [key: number]: TermsAndConditionsSelector }\r\n isGoogleBot: boolean;\r\n}\r\n\r\n/**\r\n * @description\r\n * used to interchange info between settings service and auth.interceptor\r\n * for setting HttpHeaders\r\n */\r\nexport interface HttpRegionalSettings {\r\n cultureId: number;\r\n currencyId: number;\r\n}\r\n\r\nexport interface StringIndexedObject {\r\n [key: string]: t;\r\n}\r\n\r\nexport interface NumberIndexedObject {\r\n [key: number]: any;\r\n}\r\n\r\nexport interface IntRegExpDictionary {\r\n [key: number]: RegExp;\r\n}\r\n\r\n/**\r\n * Base class for all components which use translations\r\n * translationPrefix is used to distinguish translations for particular routes (not to take them all from db)\r\n */\r\n@Directive()\r\nexport abstract class Translatable implements OnInit, OnDestroy {\r\n\r\n sen: StringIndexedObject = {};\r\n protected _userLoggedIn: boolean;\r\n\r\n protected constructor(public dataSvc: DataService, public seSvc: SettingsService) {\r\n this.sen = this.seSvc.sen;\r\n }\r\n\r\n get userLoggedIn(): boolean {\r\n return CredentialStorage.userLoggedIn;\r\n }\r\n\r\n get displayName(): string {\r\n return CredentialStorage.authInfo?.displayName;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n}\r\n\r\nexport interface BreadCrumbInfo {\r\n displayName: string;\r\n targetId?: number;\r\n targetSeoTail?: string;\r\n entityPrefix?: string;\r\n categoryIdPath?: string;\r\n redirectUrl?: string;\r\n queryParams?: any;\r\n}\r\n\r\nexport interface LoginResult {\r\n success: boolean;\r\n cultureId: number;\r\n currencyId: number;\r\n companyDisplayName: string;\r\n tokenExpirationMinutes: string;\r\n cartTokens: Array\r\n}\r\n\r\nexport interface CartTokenSelector {\r\n userId: number;\r\n cartToken: string;\r\n cartName: string;\r\n created: Date;\r\n order: number;\r\n}\r\n\r\nexport interface PreAuthRequest {\r\n userName: string;\r\n password: string;\r\n validTo: any;\r\n}\r\n\r\nexport interface PreAuthResponseModel {\r\n success: boolean;\r\n}\r\n\r\nexport interface CategoryInfo {\r\n id: number;\r\n name: string;\r\n seoUrl: string;\r\n}\r\n\r\nexport function mapPrices(thePrices: IPriceInfo, theProduct: ProductVariantBriefSelector) {\r\n\r\n theProduct.priceWithVAT = thePrices.PriceWithVAT;\r\n theProduct.priceWithoutVAT = thePrices.PriceWithoutVAT;\r\n theProduct.basePrice = thePrices.BasePrice;\r\n}\r\n\r\nexport interface ProductVariantBriefSelector {\r\n productFlags: Array;\r\n id: number;\r\n code: string;\r\n ean?: string;\r\n qtyInStock?: number;\r\n availability: AvailabilitySelector;\r\n name: string;\r\n annotation: string;\r\n description: string | SafeHtml;\r\n disabled: boolean;\r\n discontinued: boolean;\r\n priceWithVAT?: number;\r\n priceWithoutVAT?: number;\r\n basePrice?: number;\r\n discount?: number | string;\r\n imagePath?: string;\r\n imageTitle?: string;\r\n commonImagePath?: string;\r\n commonImageTitle?: string;\r\n seoUrl?: string;\r\n producerId: number;\r\n producerName?: string;\r\n isAction?: boolean;\r\n isNew?: boolean;\r\n isSellOut?: boolean;\r\n isRecommended?: boolean;\r\n unit: UnitSelector;\r\n order?: number | string;\r\n breadcrumbInfo: BreadCrumbInfo[];\r\n nearestCategory?: CategoryInfo;\r\n langId?: number;\r\n ranking: number;\r\n isPhrase: boolean;\r\n vat: number;\r\n categoryName?: string;\r\n categoryIdPath?: string;\r\n minQtyOrder: number;\r\n maxQtyOrder: number;\r\n factor: number;\r\n variantKey: number;\r\n commonName: string;\r\n commonAnnotation: string;\r\n commonDescription: string;\r\n //commonSeoUrl:string;\r\n masterCode: string;\r\n colorId: number\r\n size1Id: number;\r\n size2Id: number;\r\n size3Id: number;\r\n\r\n color: string\r\n colorAB: string\r\n coating: string\r\n effect: string\r\n colorCoatingEffect?: string\r\n size: string;\r\n\r\n application: string;\r\n\r\n shapeId: string;\r\n}\r\n\r\nexport interface IQuickOrderProduct extends ProductVariantBriefSelector {\r\n Count?: number;\r\n}\r\n\r\n\r\n/**\r\n * @description Represents a range of values for the comparison 'the value is >= and <='.\r\n */\r\nexport interface ValueRangeParameter {\r\n id: number;\r\n fromValue: number;\r\n toValue: number;\r\n}\r\n\r\n/**\r\n * @description Represents a parameter value for the equality comparison of product parameters.\r\n */\r\nexport interface ExactValueParameter {\r\n id: number;\r\n valueId: number;\r\n}\r\n\r\n/**\r\n * @description Represents the filter according to parameter values of the products.\r\n */\r\nexport class ParametricFilterRequestInitializer {\r\n masterValueParameters: ExactValueParameter[] = [];\r\n exactValueParameters: ExactValueParameter[] = [];\r\n valueRangeParameters: ValueRangeParameter[] = [];\r\n}\r\n\r\nexport class ParametricFilterRequest extends ParametricFilterRequestInitializer {\r\n\r\n static url_masterValueParam = 'param_mst';\r\n static url_exactValueParam = 'param_ev';\r\n static url_valueRangeParam = 'param_rv';\r\n\r\n static filterStoreKey: string = 'prodVarFilter';\r\n\r\n constructor(initializer: ParametricFilterRequestInitializer) {\r\n super();\r\n if (initializer) {\r\n this.masterValueParameters = initializer.masterValueParameters;\r\n this.exactValueParameters = initializer.exactValueParameters;\r\n this.valueRangeParameters = initializer.valueRangeParameters;\r\n }\r\n }\r\n\r\n get paramsHash(): string {\r\n return sha256([...this.exactValueParameters, ...this.valueRangeParameters].join('|'));\r\n }\r\n\r\n /**\r\n * @description Adds a condition for the equality comparison to the parametric filter.\r\n */\r\n addExactValue(id: number, valueId: number) {\r\n if (this.exactValueParameters && this.exactValueParameters.find(evp => evp.id == id && evp.valueId == valueId)) {\r\n return;\r\n }\r\n\r\n const exactValue: ExactValueParameter = {\r\n id: id,\r\n valueId: valueId\r\n };\r\n this.exactValueParameters.push(exactValue);\r\n }\r\n\r\n addMasterValue(id: number, valueId: number) {\r\n if (this.masterValueParameters && this.masterValueParameters.find(evp => evp.id == id && evp.valueId == valueId)) {\r\n return;\r\n }\r\n\r\n const masterValue: ExactValueParameter = {\r\n id: id,\r\n valueId: valueId\r\n };\r\n this.masterValueParameters.push(masterValue);\r\n }\r\n\r\n /**\r\n * @description Adds a condition for the comparison 'the value is >= and <=' to the parametric filter.\r\n */\r\n addValueRange(id: number, fromValue: number, toValue: number) {\r\n let from = null;\r\n if (fromValue !== undefined && fromValue !== null) {\r\n from = parseFloat(fromValue.toString());\r\n if (isNaN(from)) {\r\n from = null\r\n }\r\n }\r\n\r\n let to = null;\r\n if (toValue !== undefined && toValue !== null) {\r\n to = parseFloat(toValue.toString());\r\n if (isNaN(to)) {\r\n to = null\r\n }\r\n }\r\n\r\n const range: ValueRangeParameter = {\r\n id: id,\r\n fromValue: from,\r\n toValue: to\r\n };\r\n this.valueRangeParameters.push(range);\r\n this.valueRangeParameters = this.valueRangeParameters.filter(vr => vr.fromValue != null || vr.toValue != null);\r\n }\r\n\r\n\r\n clear(): void {\r\n this.valueRangeParameters.splice(0);\r\n this.exactValueParameters.splice(0);\r\n this.masterValueParameters.splice(0);\r\n }\r\n\r\n isExactValueInFilter(paramId: number, valueId: number): boolean {\r\n if (!this.exactValueParameters || !this.exactValueParameters.length) {\r\n return false;\r\n }\r\n\r\n let foundExactValue = this.exactValueParameters.find(p => p.id == paramId && p.valueId == valueId);\r\n\r\n return !!foundExactValue;\r\n\r\n }\r\n\r\n isMasterValueInFilter(paramId: number, valueId: number): boolean {\r\n if (!this.masterValueParameters || !this.masterValueParameters.length) {\r\n return false;\r\n }\r\n\r\n let foundExactValue = this.masterValueParameters.find(p => p.id == paramId && p.valueId == valueId);\r\n\r\n return !!foundExactValue;\r\n\r\n }\r\n\r\n CheckedValuesNumber(paramId: number): number {\r\n if (!this.exactValueParameters || !this.exactValueParameters.length) {\r\n return 0;\r\n }\r\n\r\n let count = this.exactValueParameters.filter(p => p.id == paramId).length;\r\n\r\n return count;\r\n\r\n }\r\n\r\n isRangeParamInFilter(paramId: number): ValueRangeParameter {\r\n if (!this.valueRangeParameters || !this.valueRangeParameters.length) {\r\n return null;\r\n }\r\n\r\n let foundRangeParam = this.valueRangeParameters.find(p => p.id == paramId);\r\n\r\n return foundRangeParam;\r\n }\r\n\r\n\r\n public static getParamsFilterInitializerFromStore(): ParametricFilterRequestInitializer {\r\n return loadFromLocalStorage(ParametricFilterRequest.filterStoreKey) as ParametricFilterRequestInitializer;\r\n }\r\n\r\n public SetParamsToStore(): void {\r\n let data: ParametricFilterRequestInitializer = {\r\n exactValueParameters: this.exactValueParameters,\r\n masterValueParameters: this.masterValueParameters,\r\n valueRangeParameters: this.valueRangeParameters\r\n };\r\n saveToLocalStorage(ParametricFilterRequest.filterStoreKey, data);\r\n }\r\n\r\n public static getParamsFilterInitializerFromUrlParams(queryParams: StringIndexedObject | number | Array>, rejectParams: string[] = []): ParametricFilterRequestInitializer {\r\n if (!queryParams) {\r\n return null;\r\n }\r\n\r\n const ret: ParametricFilterRequestInitializer = new ParametricFilterRequestInitializer();\r\n for (const queryParamsKey in queryParams) {\r\n if (queryParamsKey == ParametricFilterRequest.url_exactValueParam) {\r\n ParametricFilterRequest.fillExactValuesFromUrlParam(ret, queryParams[queryParamsKey], rejectParams);\r\n }\r\n if (queryParamsKey == ParametricFilterRequest.url_masterValueParam) {\r\n ParametricFilterRequest.fillMasterValuesFromUrlParam(ret, queryParams[queryParamsKey]);\r\n }\r\n if (queryParamsKey == ParametricFilterRequest.url_valueRangeParam) {\r\n ParametricFilterRequest.fillRangeValuesFromUrlParam(ret, queryParams[queryParamsKey]);\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n private static fillExactValuesFromUrlParam(initializerToBeFilled: ParametricFilterRequestInitializer, queryParam: string | Array | number | Array, rejectParams: string[] = []) {\r\n\r\n if (!initializerToBeFilled || !queryParam) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(queryParam)) {\r\n queryParam = [queryParam.toString()];\r\n }\r\n\r\n if (!initializerToBeFilled.exactValueParameters) {\r\n initializerToBeFilled.exactValueParameters = [];\r\n }\r\n\r\n for (let i = 0; i < queryParam.length; i++) {\r\n const param = queryParam[i].toString();\r\n const splitted = param.split('_');\r\n if (!rejectParams || rejectParams?.length == 0 || !rejectParams.find(x => x == splitted[0])) {\r\n initializerToBeFilled.exactValueParameters.push({id: Number(splitted[0]), valueId: Number(splitted[1])});\r\n }\r\n }\r\n\r\n }\r\n\r\n private static fillMasterValuesFromUrlParam(initializerToBeFilled: ParametricFilterRequestInitializer, queryParam: string | Array | number | Array) {\r\n if (!initializerToBeFilled || !queryParam) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(queryParam)) {\r\n queryParam = [queryParam.toString()];\r\n }\r\n\r\n if (!initializerToBeFilled.masterValueParameters) {\r\n initializerToBeFilled.masterValueParameters = [];\r\n }\r\n\r\n for (let i = 0; i < queryParam.length; i++) {\r\n const param = queryParam[i].toString();\r\n const splitted = param.split('_');\r\n initializerToBeFilled.masterValueParameters.push({id: Number(splitted[0]), valueId: Number(splitted[1])});\r\n }\r\n }\r\n\r\n private static fillRangeValuesFromUrlParam(initializerToBeFilled: ParametricFilterRequestInitializer, queryParam: string | Array | number | Array) {\r\n if (!initializerToBeFilled || !queryParam) {\r\n return;\r\n }\r\n if (!Array.isArray(queryParam)) {\r\n queryParam = [queryParam.toString()];\r\n }\r\n\r\n if (!initializerToBeFilled.valueRangeParameters) {\r\n initializerToBeFilled.valueRangeParameters = [];\r\n }\r\n\r\n for (let i = 0; i < queryParam.length; i++) {\r\n const param = queryParam[i].toString();\r\n const splitted = param.split('_');\r\n initializerToBeFilled.valueRangeParameters.push({\r\n id: Number(splitted[0]),\r\n fromValue: Number(splitted[1]),\r\n toValue: Number(splitted[1])\r\n });\r\n }\r\n\r\n }\r\n\r\n public convertToUrlParams(queryParamsToBeFilled: StringIndexedObject | number | Array>): void {\r\n queryParamsToBeFilled[ParametricFilterRequest.url_exactValueParam] = null;\r\n queryParamsToBeFilled[ParametricFilterRequest.url_masterValueParam] = null;\r\n queryParamsToBeFilled[ParametricFilterRequest.url_valueRangeParam] = null;\r\n ParametricFilterRequest.serializeExactValueParamsToQueryParams(this.exactValueParameters, >>queryParamsToBeFilled);\r\n ParametricFilterRequest.serializeMasterValueParamsToQueryParams(this.masterValueParameters, >>queryParamsToBeFilled);\r\n ParametricFilterRequest.serializeValueRangeParamsToQueryParams(this.valueRangeParameters, >>queryParamsToBeFilled);\r\n }\r\n\r\n private static serializeExactValueParamsToQueryParams(exactValueParameters: ExactValueParameter[], queryParams: StringIndexedObject>) {\r\n if (!exactValueParameters || !exactValueParameters.length) {\r\n return;\r\n }\r\n\r\n if (queryParams[ParametricFilterRequest.url_exactValueParam] && !Array.isArray(queryParams[ParametricFilterRequest.url_exactValueParam])) {\r\n queryParams[ParametricFilterRequest.url_exactValueParam] = [queryParams[ParametricFilterRequest.url_exactValueParam]];//hack, sorry\r\n }\r\n\r\n if (!queryParams[ParametricFilterRequest.url_exactValueParam]) {\r\n queryParams[ParametricFilterRequest.url_exactValueParam] = [];\r\n }\r\n\r\n exactValueParameters.sort((a, b) => {\r\n if (!a || !b) {\r\n return 0;\r\n }\r\n if (a.id < b.id) {\r\n return -1;\r\n }\r\n\r\n if (a.id == b.id) {\r\n if (a.valueId < b.valueId) {\r\n return -1;\r\n }\r\n if (a.valueId > b.valueId) {\r\n return 1;\r\n }\r\n if (a.valueId == b.valueId) {\r\n return 0;\r\n }\r\n }\r\n\r\n if (a.id > b.id) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n exactValueParameters.forEach((ev) => {\r\n const ser = `${ev.id}_${ev.valueId}`;\r\n queryParams[ParametricFilterRequest.url_exactValueParam].push(ser);\r\n });\r\n }\r\n\r\n private static serializeMasterValueParamsToQueryParams(exactValueParameters: ExactValueParameter[], queryParams: StringIndexedObject>) {\r\n if (!exactValueParameters || !exactValueParameters.length) {\r\n return;\r\n }\r\n\r\n if (queryParams[ParametricFilterRequest.url_masterValueParam] && !Array.isArray(queryParams[ParametricFilterRequest.url_masterValueParam])) {\r\n queryParams[ParametricFilterRequest.url_masterValueParam] = [queryParams[ParametricFilterRequest.url_masterValueParam]];//hack, sorry\r\n }\r\n\r\n if (!queryParams[ParametricFilterRequest.url_masterValueParam]) {\r\n queryParams[ParametricFilterRequest.url_masterValueParam] = [];\r\n }\r\n\r\n exactValueParameters.sort((a, b) => {\r\n if (!a || !b) {\r\n return 0;\r\n }\r\n if (a.id < b.id) {\r\n return -1;\r\n }\r\n\r\n if (a.id == b.id) {\r\n if (a.valueId < b.valueId) {\r\n return -1;\r\n }\r\n if (a.valueId > b.valueId) {\r\n return 1;\r\n }\r\n if (a.valueId == b.valueId) {\r\n return 0;\r\n }\r\n }\r\n\r\n if (a.id > b.id) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n exactValueParameters.forEach((ev) => {\r\n const ser = `${ev.id}_${ev.valueId}`;\r\n queryParams[ParametricFilterRequest.url_masterValueParam].push(ser);\r\n });\r\n }\r\n\r\n private static serializeValueRangeParamsToQueryParams(valueRangeParameters: ValueRangeParameter[], queryParams: StringIndexedObject>) {\r\n if (!valueRangeParameters || !valueRangeParameters.length) {\r\n return;\r\n }\r\n\r\n if (queryParams[ParametricFilterRequest.url_valueRangeParam] && !Array.isArray(queryParams[ParametricFilterRequest.url_valueRangeParam])) {\r\n const tmp = queryParams[ParametricFilterRequest.url_valueRangeParam];//hack, sorry\r\n queryParams[ParametricFilterRequest.url_valueRangeParam] = [tmp];\r\n }\r\n\r\n if (!queryParams[ParametricFilterRequest.url_valueRangeParam]) {\r\n queryParams[ParametricFilterRequest.url_valueRangeParam] = [];\r\n }\r\n\r\n valueRangeParameters.sort((a, b) => {\r\n if (!a || !b) {\r\n return 0;\r\n }\r\n\r\n if (a.id < b.id) {\r\n return -1;\r\n }\r\n\r\n\r\n if (a.id > b.id) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n valueRangeParameters.forEach((rv) => {\r\n const ser = `${rv.id}_${rv.fromValue}_${rv.toValue}`;\r\n queryParams[ParametricFilterRequest.url_valueRangeParam].push(ser);\r\n });\r\n }\r\n}\r\n\r\nexport interface ErrorSelector {\r\n message?: string;\r\n subject?: string;\r\n}\r\n\r\nexport interface PagedResponse {\r\n total: number;\r\n data: T[];\r\n pages?: number;\r\n}\r\n\r\nexport interface ShopSeoSelector {\r\n ShopName: string;\r\n ShopTitle: string;\r\n ShopTitleHp: string;\r\n ShopDescription: string;\r\n}\r\n\r\n\r\nexport interface AvailabilitySelector {\r\n id: number;\r\n order: number;\r\n name: string;\r\n jsonLd: string;\r\n isBuyable: boolean;\r\n showProductOnShop: string;\r\n exportToXmlFeeds: boolean;\r\n}\r\n\r\nexport interface GaSelector {\r\n analyticsId: string;\r\n adsId: string;\r\n adsLabel: string;\r\n remarkId: string;\r\n gtmId: string;\r\n}\r\n\r\nexport interface SeznamSelector {\r\n sklikConversionId: string;\r\n sklikRetargetingId: string;\r\n zboziConversionBranchId: string;\r\n}\r\n\r\nexport interface HeurekaSelector {\r\n mereniKonverziKlic: string;\r\n overenoZakaznikyKlic: string;\r\n isOverenoZakaznikyActive: boolean;\r\n}\r\n\r\nexport interface UnitSelector {\r\n id: number;\r\n shortCut: string;\r\n}\r\n\r\nexport interface BrandSelector {\r\n logo: string;\r\n favicon: string;\r\n}\r\n\r\nexport interface SoftErrorData {\r\n initialUrl: string;\r\n redirectedUrl: string;\r\n}\r\n\r\nexport interface DomainSelector {\r\n id: number;\r\n url: string;\r\n cultureId: number;\r\n currencyId: number;\r\n}\r\n\r\nexport interface DomainSelectorExtended extends DomainSelector {\r\n cultureKey: string;\r\n currencyKey: string;\r\n}\r\n\r\nexport interface TermsAndConditionsSelector {\r\n termsUrl: string;\r\n gdprUrl: string;\r\n}\r\n\r\nexport interface ErrorPageSelector {\r\n id: number;\r\n statusCode: string;\r\n html: string;\r\n}\r\n\r\n\r\nexport interface LandingPageSelector {\r\n id: number;\r\n landingUrl: string;\r\n systemUrl: string;\r\n title: string\r\n description: string;\r\n seoTitle: string;\r\n seoDescription: string;\r\n imagePath: string;\r\n imageTitle: string;\r\n}\r\n\r\nexport interface UrlRedirectSelector {\r\n id: number;\r\n urlFrom: string;\r\n urlTo: string;\r\n}\r\n\r\nexport interface IWishList {\r\n variantIds: number[];\r\n variants?: ProductVariantBriefSelector[];\r\n}\r\n\r\nexport interface GuideSettings {\r\n maxResultCount: number;\r\n}\r\n\r\nexport interface Option {\r\n id: number;\r\n name: string;\r\n}\r\n\r\nexport type FilterType = 'category' | 'guide';","import {Injectable} from \"@angular/core\";\r\nimport {AccountMenuItems, IAccountMenuItem} from \"./common\";\r\nimport {Router} from \"@angular/router\";\r\n\r\n@Injectable()\r\nexport class AccountMenuItemsService {\r\n\r\n private _accountMenuItems: Array = null;\r\n get accountMenuItems(): Array {\r\n if (!this._accountMenuItems) {\r\n return this._accountMenuItems;\r\n }\r\n\r\n const ret: Array = [];\r\n for (let i = 0; i < this._accountMenuItems.length; i++) {\r\n const item = this._accountMenuItems[i];\r\n if (this.canBeShown(item)) {\r\n ret.push(item);\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n get activeItem(): AccountMenuItems {\r\n\r\n if (!this.accountMenuItems) {\r\n return null;\r\n }\r\n for (let i = 0; i < this.accountMenuItems.length; i++) {\r\n const item = this.accountMenuItems[i];\r\n if (item.routerLink == this.router.url) {\r\n return item.sideItem;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n constructor(private router: Router\r\n ) {\r\n\r\n\r\n this._accountMenuItems = [\r\n {\r\n sideItem: AccountMenuItems.account,\r\n routerLink: '/account',\r\n icon: 'group',\r\n isShownInTop: false,\r\n isShownInSide: true\r\n },\r\n {\r\n sideItem: AccountMenuItems.account_order_list,\r\n routerLink: '/account/objednavky/',\r\n icon: 'menu',\r\n isShownInTop: true,\r\n isShownInSide: true\r\n },\r\n {\r\n sideItem: AccountMenuItems.account_settings,\r\n routerLink: '/account/nastaveni',\r\n icon: 'settings',\r\n isShownInTop: true,\r\n isShownInSide: true\r\n },\r\n {\r\n sideItem: AccountMenuItems.account_profile,\r\n routerLink: '/account/osobni-udaje',\r\n icon: 'user',\r\n isShownInTop: true,\r\n isShownInSide: true\r\n },\r\n {\r\n sideItem: AccountMenuItems.account_delivery_addresses,\r\n routerLink: '/account/dodaci-adresy',\r\n icon: 'menu',\r\n isShownInTop: true,\r\n isShownInSide: true\r\n },\r\n {\r\n sideItem: AccountMenuItems.account_wishlists,\r\n routerLink: '/account/seznamy-prani',\r\n icon: 'heart',\r\n isShownInTop: true,\r\n isShownInSide: true\r\n }\r\n ];\r\n this.checkItems();\r\n }\r\n\r\n\r\n private checkItems(): void {\r\n if (!this.accountMenuItems) {\r\n return\r\n }\r\n for (let i = 0; i < this.accountMenuItems.length; i++) {\r\n const item = this.accountMenuItems[i];\r\n if (item.routerLink.endsWith('/')) {\r\n item.routerLink = item.routerLink.substr(0, item.routerLink.length - 1);\r\n }\r\n }\r\n }\r\n\r\n private canBeShown(item: IAccountMenuItem): boolean {\r\n item = item;//to suppress build error\r\n\r\n //here you can implement some filtering logic based on actual weather or human rights\r\n return true;\r\n }\r\n}","export enum AccountMenuItems {\r\n account = 'account-h1',\r\n account_order_list = 'account-order-list',\r\n account_settings = 'account-settings-h1',\r\n account_profile = 'account-profile-h1',\r\n account_wishlists = 'account-wishlists',\r\n account_delivery_addresses = 'account-delivery-addresses'\r\n}\r\n\r\nexport interface IAccountMenuItem {\r\n isShownInTop: boolean;\r\n isShownInSide: boolean;\r\n sideItem: AccountMenuItems;\r\n routerLink: string;\r\n icon: string;\r\n}","import {Component, HostListener, ViewChild} from \"@angular/core\";\r\nimport {Subject} from \"rxjs\";\r\nimport {Translatable} from \"../../../interfaces/general\";\r\nimport {DataService} from \"../../../services/data.service\";\r\nimport {SettingsService} from \"../../../services/settings.service\";\r\nimport {GeneralDialogRef} from \"../../general-dialog/common\";\r\nimport {CredentialsComponent} from \"../../address/credentials.component\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {ChangePasswordModel} from \"../common\";\r\nimport {UserService} from \"../../../services/user.service\";\r\n\r\ndeclare let sha256: any;\r\n\r\n@Component({\r\n templateUrl: './change-password-dialog.html'\r\n})\r\n\r\nexport class ChangePasswordDialogComponent extends Translatable {\r\n\r\n @ViewChild('credentials') credentialsComponent: CredentialsComponent;\r\n\r\n captchaFailed: boolean = false;\r\n errMessage: string = null;\r\n successMsg: string = null;\r\n\r\n timeoutHandle: any;\r\n\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private dialogRef: GeneralDialogRef, private userSvc: UserService\r\n ) {\r\n super(dataSvc, seSvc);\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.timeoutHandle) clearTimeout(this.timeoutHandle);\r\n }\r\n\r\n closeDialog() {\r\n this.dialogRef.close();\r\n }\r\n\r\n onSave(): void {\r\n this.saveData();\r\n }\r\n\r\n saveData(): void {\r\n if (!this.credentialsComponent.isValid()) return;\r\n\r\n let request: ChangePasswordModel = {\r\n oldPassword: sha256(this.credentialsComponent.getOldPassword()),\r\n newPassword: sha256(this.credentialsComponent.getPassword())\r\n };\r\n\r\n this.dataSvc.dataLoading = true;\r\n this.userSvc.changePassword(request)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.dataSvc.dataLoading = false;\r\n if (res.success) {\r\n this.successMsg = this.sen['change-pwd-modal-success'];\r\n } else {\r\n this.errMessage = this.sen['change-pwd-modal-failed'];\r\n }\r\n this.timeoutHandle = setTimeout(() => {\r\n this.successMsg = null;\r\n this.errMessage = null;\r\n if (res.success) this.closeDialog();\r\n\r\n }, 3000);\r\n\r\n }, () => {\r\n this.dataSvc.dataLoading = false;\r\n this.errMessage = this.sen['change-pwd-modal-error'];\r\n })\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (evt.key === 'Escape') {\r\n this.closeDialog();\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewChild} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {AbstractControl, FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-credentials',\r\n templateUrl: '../../tpl/credentials.html'\r\n})\r\n\r\nexport class CredentialsComponent extends Translatable implements OnChanges {\r\n\r\n @ViewChild('contentTemplate') contentTemplate: TemplateRef;\r\n\r\n credForm: FormGroup;\r\n\r\n showPasswd: boolean = false;\r\n showPasswdCfrm: boolean = false;\r\n showOldPasswd: boolean = false;\r\n\r\n @Input() pwd: string = '';\r\n @Input() withOldPassword: boolean = false;\r\n\r\n @Input() oldPwdLabel:string = this.sen['credentials-pwd-old'];\r\n @Input() pwdLabel:string = this.sen['credentials-pwd'];\r\n @Input() pwdCfrmLabel:string = this.sen['credentials-pwd-confirm'];\r\n\r\n @Output() onPasswordChange: EventEmitter = new EventEmitter();\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private fb: FormBuilder) {\r\n super(dataSvc, seSvc);\r\n\r\n this.createForm();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.ngUnsubscribe) {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes['pwd']) {\r\n this.credForm.patchValue({\r\n password: this.pwd ? this.pwd : '',\r\n confirmPassword: this.pwd ? this.pwd : ''\r\n })\r\n }\r\n this.showPasswd = false;\r\n }\r\n\r\n private createForm(): void {\r\n this.credForm = this.fb.group({\r\n oldPassword: ['', [Validators.pattern(new RegExp(this.seSvc.passwordRegExpPattern))]],\r\n password: ['', [Validators.required, Validators.pattern(new RegExp(this.seSvc.passwordRegExpPattern))]],\r\n confirmPassword: ['', [Validators.required, Validators.pattern(new RegExp(this.seSvc.passwordRegExpPattern))]]\r\n });\r\n if (this.withOldPassword) {\r\n this.credForm.get('oldPassword').addValidators(Validators.required);\r\n }\r\n this.credForm.valueChanges.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.onPasswordChange.emit(this.getPassword());\r\n }\r\n );\r\n }\r\n\r\n getPassword(): string {\r\n return this.credForm.get('password').value;\r\n }\r\n\r\n getOldPassword(): string {\r\n return this.credForm.get('oldPassword').value;\r\n }\r\n\r\n isValid(): boolean {\r\n return this.credForm.valid;\r\n }\r\n\r\n forceDirty(): void {\r\n for (let obj in this.credForm.controls) {\r\n (this.credForm.controls[obj] as AbstractControl).markAsDirty();\r\n }\r\n }\r\n\r\n showHidePassword(id: number) {\r\n if (id === 0) {\r\n this.showOldPasswd = !this.showOldPasswd;\r\n } else if (id === 1) {\r\n this.showPasswd = !this.showPasswd;\r\n } else {\r\n this.showPasswdCfrm = !this.showPasswdCfrm;\r\n }\r\n }\r\n\r\n\r\n}","\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
","import {Component, Input} from \"@angular/core\";\r\nimport {AlertType} from \"./alert.module\";\r\nimport {SafeHtml} from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n selector: 'cmp-alert',\r\n templateUrl: 'alert.component.html',\r\n styleUrls: ['../../assets/styles/2-components/alert.scss']\r\n})\r\n\r\nexport class AlertComponent {\r\n\r\n @Input() alertType: AlertType = null;\r\n @Input() innerHTML: string | SafeHtml = null;\r\n @Input() innerHTML2: string | SafeHtml = null;\r\n @Input() message: string = null;\r\n @Input() message2: string = null;\r\n\r\n /*\r\n WARNING: 'innerHTML' property overrides 'message' property\r\n */\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n {{message}}\r\n
\r\n\r\n
\r\n {{message2}}\r\n
\r\n
\r\n
\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {AlertComponent} from \"./alert.component\";\r\n\r\nexport type AlertType = 'error' | 'info' | 'success';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n AlertComponent\r\n ],\r\n exports: [\r\n AlertComponent\r\n ]\r\n})\r\n\r\nexport class AlertModule {}\r\n","import {AfterViewInit, Component, HostListener, ViewChild, ViewEncapsulation} from '@angular/core';\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Translatable, CategoryItemSelector, ArticleBaseWithChildrenSelector, DomainSelectorExtended} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DigestService} from \"../../services/digest.service\";\r\nimport {NavigationStart, Router} from \"@angular/router\";\r\nimport {SharedAppSettings} from \"../../shared-settings/shared-settings\";\r\nimport {CompareProductsService} from \"../../services/compare-products.service\";\r\nimport {filter, takeUntil} from 'rxjs/operators';\r\nimport {Subject} from \"rxjs\";\r\nimport {CartService} from \"../cart/cart.service\";\r\nimport {LuigiSuggestComponent} from \"../luigi-suggest/luigi-suggest.component\";\r\nimport {ArticleService} from \"../articles/article.service\";\r\nimport {MenuService} from \"../../services/menu.service\";\r\nimport {SwUpdate} from \"@angular/service-worker\";\r\nimport {CookiesConsentService} from \"../cookies-consent/cookies-consent.service\";\r\n\r\n\r\ndeclare let $: any;\r\ndeclare let moment: any;\r\n\r\n@Component({\r\n selector: 'app',\r\n templateUrl: '../../tpl/app.html',\r\n styleUrls: ['../../assets/styles/layout.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class AppComponent extends Translatable implements AfterViewInit {\r\n\r\n @ViewChild(LuigiSuggestComponent) suggest: LuigiSuggestComponent;\r\n\r\n categories: CategoryItemSelector[];\r\n currencyOptions: number[] = [3, 2, 1];\r\n domains: DomainSelectorExtended[] = [];\r\n activeUrlInfo: DomainSelectorExtended;\r\n currentPath: string;\r\n\r\n tim: any;\r\n responseMenuDisplay: boolean = false;\r\n menuArticleCode: string;\r\n footerArticleCode: string;\r\n contactArticleCode: string;\r\n cultureExpanded: boolean = false;\r\n currencyExpanded: boolean = false;\r\n compoundExpanded: boolean = false;\r\n ngUnsubscribe: Subject = new Subject();\r\n showUpperBar: boolean = true;\r\n selectedCurrencyId: number;\r\n bindCurrencyAndCultureToDomain: boolean;\r\n isGoogleBot: boolean = this.seSvc.settings.isGoogleBot;\r\n\r\n footerRootArticle: ArticleBaseWithChildrenSelector;\r\n copy: string;\r\n\r\n public isDarkMode: boolean\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService, public digestSvc: DigestService,\r\n private router: Router, private saSvc: SharedAppSettings, private articleSvc: ArticleService,\r\n public compareSvc: CompareProductsService, public cartSvc: CartService, public ccSvc: CookiesConsentService,\r\n private menuSvc: MenuService, private swUpdate: SwUpdate) {\r\n super(dataSvc, seSvc);\r\n\r\n this.isDarkMode = this.dataSvc.isHeadPageImg;\r\n this.dataSvc.headPageImgChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.isDarkMode = this.dataSvc.isHeadPageImg;\r\n })\r\n\r\n this.bindCurrencyAndCultureToDomain = this.seSvc.bindCurrencyAndCultureToDomain;\r\n this.seSvc.domains.forEach(elem => {\r\n const item: DomainSelectorExtended = {\r\n currencyId: elem.currencyId,\r\n cultureId: elem.cultureId,\r\n id: elem.id,\r\n url: elem.url,\r\n cultureKey: this.seSvc.settings.cultures.filter(f => f.cultureId === elem.cultureId)[0].translationKey,\r\n currencyKey: this.seSvc.settings.currencies[elem.currencyId]\r\n };\r\n this.domains.push(item);\r\n if (item.cultureId === this.seSvc.activeUrlInfo.cultureId) {\r\n this.activeUrlInfo = item;\r\n }\r\n });\r\n\r\n this.menuArticleCode = this.saSvc.Defaults.MenuArticleCode;\r\n this.footerArticleCode = this.saSvc.Defaults.FooterArticleCode;\r\n\r\n this.selectedCurrencyId = this.seSvc.currencyId;\r\n\r\n this.router.events\r\n .pipe(\r\n filter((evt: any) => evt instanceof NavigationStart),\r\n takeUntil(this.ngUnsubscribe)\r\n )\r\n .subscribe(res => {\r\n this.dataSvc.isHeadPageImg = false;\r\n this.currentPath = res['url'];\r\n\r\n this.dataSvc.setMetaBaiduSogou(this.isIndexPage);\r\n\r\n if (/registration/.test(res['url']) && this.userLoggedIn) {\r\n this.router.navigateByUrl('/').then(() => {\r\n });\r\n }\r\n /**\r\n * default title and description\r\n */\r\n this.seSvc.settings.routesWithDefaultSeo.forEach(elem => {\r\n if (elem.test(res['url'].toLowerCase())) {\r\n this.setDefaultSeo();\r\n }\r\n })\r\n\r\n this.seSvc.urlRedirects.forEach(x => {\r\n if (res.url == x.urlFrom) {\r\n if (x.urlTo.startsWith('http')) {\r\n document.location.href = x.urlTo;\r\n } else {\r\n this.router.navigateByUrl(x.urlTo).then(() => {\r\n });\r\n }\r\n }\r\n })\r\n });\r\n\r\n // this.setCopy();\r\n }\r\n\r\n /*private setCopy(): void {\r\n let year = (new Date()).getFullYear().toString();\r\n this.copy = this.sen['app-copyright']\r\n .replace('yyyy', year)\r\n .replace('#ND_LINK#', `NetDirect`);\r\n }*/\r\n\r\n\r\n setCurrency(id: number): void {\r\n this.seSvc.setCultureAndReload(true, this.seSvc.culture.cultureId, id);\r\n }\r\n\r\n setCompoundCultureCultureAndCurrency(cultureId: number) {\r\n this.seSvc.setCultureAndReload(true, cultureId, this.seSvc.currencyId);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getFooterRootArticle();\r\n this.seSvc.getUrlRedirects();\r\n\r\n if (this.swUpdate.isEnabled) {\r\n\r\n this.swUpdate.available.subscribe(() => {\r\n\r\n if (confirm(\"Je k dispozici nová verze aplikace, chcete ji nahrát?\")) {\r\n window.location.reload();\r\n }\r\n });\r\n }\r\n }\r\n\r\n getFooterRootArticle(): void {\r\n this.articleSvc.getFooterArticles()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(\r\n (res) => {\r\n if (res && res.childArticles && res.childArticles.length > 0) {\r\n this.footerRootArticle = res;\r\n } else {\r\n this.footerRootArticle = null;\r\n }\r\n }\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.initScrollbarWidthVar();\r\n this.setDefaultSeo();\r\n }\r\n\r\n private setDefaultSeo(): void {\r\n let can = this.dataSvc.domain;\r\n this.dataSvc.setPageHead(this.seSvc.settings.shopSeo.ShopDescription, can);\r\n this.dataSvc.setTitle(this.seSvc.settings.shopSeo.ShopTitle);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n clearTimeout(this.tim);\r\n }\r\n\r\n initScrollbarWidthVar() {\r\n const el = document.querySelector(\"html\");\r\n const scrollbarWidth = (window.innerWidth - document.documentElement.clientWidth).toString();\r\n el.style.setProperty('--scrollbar-width', scrollbarWidth + 'px');\r\n }\r\n\r\n toggleCurrency(): void {\r\n this.currencyExpanded = !this.currencyExpanded;\r\n }\r\n\r\n toggleCompound(): void {\r\n this.compoundExpanded = !this.compoundExpanded;\r\n if (this.compoundExpanded) {\r\n $('.js-compound').slideDown(250)\r\n } else {\r\n $('.js-compound').slideUp(250);\r\n }\r\n }\r\n\r\n onNoArticles(): void {\r\n this.showUpperBar = false;\r\n }\r\n\r\n\r\n toggleMenu(event: MouseEvent) {\r\n event.cancelBubble = true;\r\n this.menuSvc.toggleMenu.emit(event);\r\n }\r\n\r\n /*private isMobileMenu (): boolean {\r\n return $('#js-responsive-menu').is(\":visible\");\r\n }*/\r\n\r\n\r\n visibleSearch(_event: MouseEvent): void {\r\n // this.menuSvc.toggleMenu.emit(event);\r\n $(\"body\").addClass(\"search-visible\");\r\n }\r\n\r\n get isIndexPage(): boolean {\r\n return this.currentPath === '/';\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (evt.key === 'Escape') {\r\n const $target = $(evt.target);\r\n\r\n if ($target.closest('cmp-flex-suggest').length === 0) {\r\n this.dataSvc.searchShow(false);\r\n }\r\n\r\n this.dataSvc.cultureExpand(false);\r\n this.cultureExpanded = false\r\n }\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \"{{sen['shop-name']}}\"\r\n\r\n \"{{sen['shop-name']}}\"\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \"{{sen['shop-name']}}\"\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {{article.name}}\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
0\" class=\"footer-links\">\r\n \r\n \r\n \r\n {{child.name}}\r\n \r\n\r\n \r\n {{child.name}}\r\n \r\n \r\n\r\n \r\n \r\n {{child.name}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \"{{sen['shop-name']}}\"/\r\n
\r\n\r\n
\r\n {{sen['footer-copy-1']}}\r\n
\r\n\r\n
\r\n {{sen['footer-copy-2']}}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\r\n * Main application module\r\n * WARNING:\r\n * Since this module is loaded first, keep it as small as possible!!!\r\n * do not add any route-specific features here, look into \"app/modules/app/app.routes.ts\"\r\n * how this should be done correctly\r\n */\r\nimport {APP_INITIALIZER, enableProdMode, ErrorHandler, LOCALE_ID, NgModule} from '@angular/core';\r\nimport {BrowserModule, Title} from '@angular/platform-browser';\r\nimport {AppComponent} from './app.component';\r\nimport {AppRoutingWithProviders} from \"./app.routes\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {DigestService} from \"../../services/digest.service\";\r\nimport {ErrorService} from \"../../services/error.service\";\r\nimport {GetLocaleFactory, SettingsService} from \"../../services/settings.service\";\r\nimport {LoginModule} from \"../login/login.module\";\r\nimport {ArticleService} from \"../articles/article.service\";\r\nimport {CartService} from \"../cart/cart.service\";\r\nimport {SharedAppSettings, SharedCategorySettings, SharedProductSettings} from \"../../shared-settings/shared-settings\";\r\nimport {CartIndicatorModule} from \"../cart-indicator/cart-indicator.module\";\r\nimport {HelperComponentsModule} from \"../helper-components/helper-components.module\";\r\nimport {ArticleModule} from \"../articles/article.module\";\r\nimport {CartChangeModalModule} from \"../cart-modal/cart-change-modal.module\";\r\nimport {BreadcrumbsModule} from \"../breadcrumbs/breadcrumbs.module\";\r\nimport {PreloaderModule} from \"../preloader/preloader.module\";\r\nimport {WishListService} from \"../../services/wish-list-service\";\r\nimport {CompareProductsService} from \"../../services/compare-products.service\";\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from \"@angular/common/http\";\r\nimport {MainInterceptor} from \"../../interceptors/main.interceptor\";\r\nimport {IntegrationService} from \"../../interceptors/integration.service\";\r\nimport localeCs from '@angular/common/locales/cs';\r\nimport localeEn from '@angular/common/locales/en';\r\nimport localeZh from '@angular/common/locales/zh';\r\nimport {registerLocaleData} from \"@angular/common\";\r\nimport {CookieWarningModule} from \"../cookie-warning/cookie-warning.module\";\r\nimport {GlobalErrorHandler} from \"../../services/global-error-handler.service\";\r\nimport {CredentialStorage} from \"../../services/credential-storage.service\";\r\nimport {NotifyStripeModule} from \"../notify-stripe/notify-stripe.module\";\r\nimport {SearchService} from \"../../services/search.service\";\r\nimport {UiDirectivesModule} from \"../../directives/ui-directives.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {FlexSuggestModule} from \"../flex-suggest/flex-suggest.module\";\r\nimport {GeneralDialogModule} from \"../general-dialog/general-dialog.module\";\r\nimport {NewsLetterRegistrationModule} from \"../newsletters/newsletter-registration.module\";\r\nimport {MenuModule} from \"../menu/menu.module\";\r\nimport {MenuService} from \"../../services/menu.service\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {SettingsAboutusModule} from \"../settings/settings-aboutus.module\";\r\nimport {SettingsSocialModule} from \"../settings-social/settings-social.module\";\r\nimport {LuigiSuggestModule} from \"../luigi-suggest/luigi-suggest.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ServiceWorkerModule} from '@angular/service-worker';\r\nimport {environment} from \"../../environments/environment\";\r\nimport {CartTokenService} from \"../cart/cart-token.service\";\r\nimport {DeliveryPaymentService} from \"../delivery-payment/delivery-payment.service\";\r\nimport {UserService} from \"../../services/user.service\";\r\nimport {RECAPTCHA_V3_SITE_KEY, RecaptchaV3Module} from \"ng-recaptcha\";\r\nimport {CookiesConsentModule} from \"../cookies-consent/cookies-consent.module\";\r\nimport {CookiesConsentService} from \"../cookies-consent/cookies-consent.service\";\r\nimport {AccountMenuItemsService} from \"../account-menu/account-menu.service\";\r\nimport {FlexCaptchaService} from \"../../services/flex-captcha.service\";\r\nimport {FallBackCaptchaModule} from \"../fall-back-captcha/fall-back-captcha.module\";\r\nimport {LandingPageService} from \"../../services/landing-page.service\";\r\nimport {DistributorBoxModule} from \"../distributor-box/distributor-box.module\";\r\nimport {DistributorService} from \"../../services/distributor.service\";\r\nimport {WishListModule} from \"../wish-list/wish-list.module\";\r\nimport {GoogleMapSettings} from \"../google-map/interfaces/GoogleMapSettings\";\r\nimport {WishListTokenService} from \"../wish-list/wish-list-token.service\";\r\nimport {CultureModule} from \"../culture/culture.module\";\r\nimport {BrowserAnimationsModule} from \"@angular/platform-browser/animations\";\r\n\r\nregisterLocaleData(localeCs, 'cs-CZ');\r\n// registerLocaleData(localeSk, 'sk-SK');\r\nregisterLocaleData(localeEn, 'en-US');\r\nregisterLocaleData(localeZh, 'zh-CN');\r\n\r\nexport function AppInitFactory(seSvc: SettingsService, ccSvc: CookiesConsentService) {\r\n ccSvc.setStorageHooks();\r\n return () => seSvc.getCartTokens()\r\n}\r\n\r\nexport function GoogleMapSettingsFactory(seSvc: SettingsService) {\r\n return seSvc.GoogleMapSettings;\r\n}\r\n\r\nenableProdMode();\r\n\r\n@NgModule({\r\n imports: [\r\n BreadcrumbsModule,\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n ArticleModule,\r\n CartIndicatorModule,\r\n CartChangeModalModule,\r\n HelperComponentsModule,\r\n HttpClientModule,\r\n ImageCacheBustModule,\r\n LoginModule,\r\n PreloaderModule,\r\n AppRoutingWithProviders,\r\n CookieWarningModule,\r\n NotifyStripeModule,\r\n UiDirectivesModule,\r\n FlexSuggestModule,\r\n GeneralDialogModule,\r\n NewsLetterRegistrationModule,\r\n MenuModule,\r\n SettingsAboutusModule,\r\n SettingsSocialModule,\r\n CustomPipesModule,\r\n RecaptchaV3Module,\r\n ServiceWorkerModule.register('ngsw-worker.js', {\r\n scope: '/',\r\n enabled: environment.production && environment.isPwa,\r\n registrationStrategy: 'registerImmediately'\r\n }),\r\n CookiesConsentModule,\r\n FallBackCaptchaModule,\r\n DistributorBoxModule,\r\n WishListModule,\r\n CultureModule\r\n ],\r\n declarations: [\r\n AppComponent\r\n ],\r\n providers: [\r\n {\r\n provide: ErrorHandler,\r\n useClass: GlobalErrorHandler\r\n },\r\n LandingPageService,\r\n UserService,\r\n AccountMenuItemsService,\r\n DeliveryPaymentService,\r\n LuigiSuggestModule,\r\n MenuService,\r\n SharedCategorySettings,\r\n SharedProductSettings,\r\n CategoryService,\r\n CredentialStorage,\r\n IntegrationService,\r\n ArticleService,\r\n CartService,\r\n CartTokenService,\r\n Title,\r\n DataService,\r\n DigestService,\r\n ErrorService,\r\n SearchService,\r\n CompareProductsService,\r\n /**\r\n * @description\r\n * If you need your pipes to respond to culture changes\r\n * you must configure LOCALE_ID provider via settings {@link SettingsService} GetLocaleFactory function\r\n */\r\n {\r\n provide: LOCALE_ID,\r\n deps: [SettingsService],\r\n useFactory: GetLocaleFactory\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: AppInitFactory,\r\n deps: [SettingsService, CookiesConsentService],\r\n multi: true\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MainInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: RECAPTCHA_V3_SITE_KEY,\r\n useValue: '6Lfip6cUAAAAACoF3CDLnoTzYtu6NeU4RVJkfLJ6'\r\n },\r\n {\r\n provide: GoogleMapSettings,\r\n useFactory: GoogleMapSettingsFactory,\r\n deps: [SettingsService]\r\n },\r\n SettingsService,\r\n SharedAppSettings,\r\n WishListService,\r\n WishListTokenService,\r\n CookiesConsentService,\r\n FlexCaptchaService,\r\n DistributorService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\n\r\nexport class AppModule {\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {Routes, RouterModule} from '@angular/router';\r\nimport {RouteGuardService} from \"../../services/route-guard.service\";\r\n\r\n/**\r\n * IMPORTANT:\r\n * Do NOT forget to add a RegEx for the route to \"FlexMvc/Helpers/RouteEval.Helper.cs\"\r\n * Do NOT forget to test it!!!\r\n */\r\nconst routes: Routes = [\r\n {path: '', loadChildren: () => import('../index/index.module').then(m => m.IndexModule), pathMatch: 'full'},\r\n // {path: 'c', loadChildren: () => import('../category/category.module').then(m => m.CategoryModule)},\r\n // {path: 'products', loadChildren: () => import('../category/category.module').then(m => m.CategoryModule)},\r\n // {path: 'v', loadChildren: () => import('../product/product.module').then(m => m.ProductModule), data: { Type: 'Variant' }},\r\n // {path: 'vk', loadChildren: () => import('../product/product.module').then(m => m.ProductModule), data: { Type: 'VariantKey' }},\r\n // {path: 'p', loadChildren: () => import('../producers/producers.module').then(m => m.ProducersModule)},\r\n // {path: 'registration', loadChildren: () => import('../registration/registration.module').then(m => m.RegistrationModule)},\r\n {path: 'article', loadChildren: () => import('../articles/article-detail.module').then(m => m.ArticleDetailModule)},\r\n {path: 'warning', loadChildren: () => import('../warnings/warnings.module').then(m => m.WarningsModule)},\r\n {path: 'account', loadChildren: () => import('../account/account.module').then(m => m.AccountModule), canActivate: [RouteGuardService]},\r\n {path: 'kosik', loadChildren: () => import('../cart/cart.module').then(m => m.CartModule)},\r\n {path: 'forgotten-password', loadChildren: () => import('../forgotten-password/forgotten-password.module').then(m => m.ForgottenPasswordModule)},\r\n {path: 'search-result', loadChildren: () => import('../search-result/search-result.module').then(m => m.SearchResultModule)},\r\n //{path: 'search-result', loadChildren: 'app/modules/luigi-search/luigi-search.module#LuigiSearchModule'},\r\n {path: 'newsletter-confirmation', loadChildren: () => import('../newsletters/newsletter-confirmation.module').then(m => m.NewsLetterConfirmationModule)},\r\n {path: 'newsletter-cancellation', loadChildren: () => import('../newsletters/newsletter-unregistration.module').then(m => m.NewsLetterUnregistrationModule)},\r\n {path: 'error', loadChildren: () => import('../warnings/warnings.module').then(m => m.WarningsModule)},\r\n {path: 'downloads', loadChildren: () => import('../downloads/downloads.module').then(m => m.DownloadsModule)},\r\n // {path: 'distributors', loadChildren: () => import('../distributor/distributor.module').then(m => m.DistributorModule)},\r\n {path: 'news', loadChildren: () => import('../news/news.module').then(m => m.NewsModule)},\r\n // {path: 'inspiration', loadChildren: () => import('../inspiration/inspiration.module').then(m => m.InspirationModule)},\r\n {path: 'contact', loadChildren: () => import('../contact/contact.module').then(m => m.ContactModule)},\r\n // {path: 'about-us', loadChildren: () => import('../about-us/about-us.module').then(m => m.AboutUsModule)},\r\n // {path: 'services', loadChildren: () => import('../services/services.module').then(m => m.ServicesModule)},\r\n // {path: 'wishlist', loadChildren: () => import('../wish-list/wish-list-list.module').then(m => m.WishListListModule)},\r\n // {path: 'innovation', loadChildren: () => import('../innovation/innovation-page.module').then(m => m.InnovationPageModule)},\r\n // {path: 'partners', loadChildren: () => import('../partners-article/partners-article.module').then(m => m.PartnersArticleModule)},\r\n //{path: 'guide', loadChildren: () => import('../guide/guide.module').then(m => m.GuideModule)},\r\n {path: 'verification', loadChildren: () => import('../product-verification/product-verification.module').then(m => m.ProductVerificationModule)},\r\n {path: 'product-verification', loadChildren: () => import('../product-verification/product-verification-article.module').then(m => m.ProductVerificationArticleModule)},\r\n {path: 'divisions', loadChildren: () => import('../divisions/divisions.module').then(m => m.DivisionsModule)},\r\n //\r\n\r\n // preparing GP WebPay routes\r\n // {path: 'gpwebpay', loadChildren: 'app/modules/cart/cart.module#CartModule'},\r\n {path: 'compare', loadChildren: () => import('../compare/compare.module').then(m => m.CompareModule)},\r\n // DO NOT ADD THIS TO \"FlexMvc/Helpers/RouteEval.Helper.cs\"\r\n {path: '**', redirectTo: '/error/404'}\r\n];\r\n\r\nexport const appRoutingProviders: any[] = [\r\n RouteGuardService\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule],\r\n providers: appRoutingProviders\r\n})\r\nexport class AppRoutingModule { }\r\n\r\n@NgModule({\r\n imports: [AppRoutingModule],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingWithProviders {\r\n static forRoot(config: any[]): ModuleWithProviders {\r\n return {\r\n ngModule: AppRoutingModule,\r\n providers: config\r\n }\r\n }\r\n}\r\n","import {ArticleBriefSelector, Option, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Component, EventEmitter, Input, Output, ViewEncapsulation} from \"@angular/core\";\r\nimport {ArticleListPlace} from \"./common\";\r\nimport {Router} from \"@angular/router\";\r\n\r\n\r\n@Component({\r\n templateUrl: './article-list-filter.html',\r\n selector: 'cmp-article-list-filter',\r\n styleUrls: ['../../assets/styles/2-components/article-list.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleListFilterComponent extends Translatable {\r\n @Input() classModificator: string;\r\n @Input() articles: Array = null;\r\n @Input() categories: Option[] = null;\r\n @Input() categoryId: number;\r\n @Input() itemPlace: ArticleListPlace;\r\n @Input() categoryCount: number = 5;\r\n @Input() showAnnotation: boolean = true;\r\n\r\n @Output() categoryChanged: EventEmitter = new EventEmitter();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private router: Router) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n categoryClicked(catId: number): void {\r\n\r\n this.router.navigate(['/inspiration'],\r\n {\r\n queryParams: {\r\n category: catId,\r\n page: 1\r\n }\r\n })\r\n\r\n this.categoryId = catId != this.categoryId ? catId : null;\r\n this.categoryChanged.emit(this.categoryId);\r\n }\r\n\r\n isSelected(id: number): boolean {\r\n return this.categoryId == id;\r\n }\r\n}","
\r\n
\r\n \r\n \r\n\r\n
0 && categoryCount > 0\">\r\n
\r\n
\r\n {{sen['inspiration-box-category-title']}}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
","import {Component, EventEmitter, Input, Output, ViewEncapsulation} from \"@angular/core\";\r\nimport {ArticleBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {ArticleListPlace} from \"./common\";\r\n\r\n@Component({\r\n templateUrl: './article-list-item.html',\r\n selector: 'cmp-article-list-item',\r\n styleUrls: ['../../assets/styles/2-components/article-item.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleListItemComponent extends Translatable {\r\n @Input() article: ArticleBriefSelector;\r\n @Input() place: ArticleListPlace\r\n @Input() position: number;\r\n @Input() showAnnotation: boolean = true;\r\n\r\n @Output() onLinkClicked: EventEmitter = new EventEmitter();\r\n\r\n minutePlural: {} = {};\r\n imagePathPrefix: string;\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n this.imagePathPrefix = seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.minutePlural = {\r\n '=0': this.sen['0--minute'],\r\n '=1': `# ${this.sen['1-minute']}`,\r\n '=2': `# ${this.sen['2-3-4--minute']}`,\r\n '=3': `# ${this.sen['2-3-4--minute']}`,\r\n '=4': `# ${this.sen['2-3-4--minute']}`,\r\n 'other': `# ${this.sen['5-and-more--minute']}`\r\n };\r\n }\r\n\r\n linkClicked(ev: any): void {\r\n this.onLinkClicked.emit(ev);\r\n }\r\n\r\n}","\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n {{article.readMinutes | i18nPlural: minutePlural}}\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n
\r\n
{{article.dateCreated | date: seSvc.shortDateFormat}}
\r\n
{{article.annotation}}
\r\n \r\n
\r\n
","import {ArticleBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Component, Input, SimpleChanges, ViewEncapsulation} from \"@angular/core\";\r\nimport {ArticleListPlace} from \"./common\";\r\n\r\n@Component({\r\n templateUrl: './article-list-menu.html',\r\n selector: 'cmp-article-list-menu',\r\n styleUrls: ['../../assets/styles/2-components/article-list-menu.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleListMenuComponent extends Translatable {\r\n\r\n @Input() articles: Array;\r\n @Input() place: ArticleListPlace;\r\n @Input() itemsNmber: number = 6;\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['place']) {\r\n if (this.place == \"services\") {\r\n if (this.articles) {\r\n this.articles.forEach(a => {\r\n a.seoUrl = a.seoUrl.replace(/^\\/clanek\\//, '/services/')\r\n })\r\n }\r\n }\r\n if (this.place == \"news\") {\r\n if (this.articles) {\r\n this.articles.forEach(a => {\r\n a.seoUrl = a.seoUrl.replace(/^\\/clanek\\//, '/news/')\r\n })\r\n }\r\n }\r\n if (this.place == \"inspiration\") {\r\n if (this.articles) {\r\n this.articles.forEach(a => {\r\n a.seoUrl = a.seoUrl.replace(/^\\/clanek\\//, '/inspiration/')\r\n })\r\n }\r\n }\r\n }\r\n }\r\n\r\n seoUrl(articleId: number): string {\r\n let res;\r\n if(this.place == 'services'){\r\n res = this.articles.find(x => x.articleId == articleId).seoUrl.replace(/^\\/clanek\\//, '/services/');\r\n }else if(this.place == \"news\"){\r\n res = this.articles.find(x => x.articleId == articleId).seoUrl.replace(/^\\/clanek\\//, '/news/')\r\n }else if(this.place == \"inspiration\"){\r\n res = this.articles.find(x => x.articleId == articleId).seoUrl.replace(/^\\/clanek\\//, '/inspiration/')\r\n }else{\r\n res = this.articles.find(x => x.articleId == articleId).seoUrl;\r\n }\r\n return res;\r\n }\r\n\r\n}"," 0\">\r\n \r\n\r\n","import {ArticleBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Subject} from \"rxjs\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\n\r\n@Component({\r\n templateUrl: './article-list-related.html',\r\n selector: 'cmp-article-list-related',\r\n styleUrls: ['../../assets/styles/2-components/article-panel.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleListRelatedComponent extends Translatable {\r\n\r\n @Input() set articleId(value: number) {\r\n if (!value) {\r\n this.articles = null;\r\n return;\r\n }\r\n\r\n this.getArticles(value);\r\n }\r\n\r\n @Input() childArticlesMaxCount: number = 4;\r\n\r\n articles: ArticleBriefSelector[];\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private http: HttpClient, private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n private getArticles(id: number) {\r\n this.http.get(`api/article/related/${id}/${this.childArticlesMaxCount}`)\r\n\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.articles = res;\r\n if (this.articles) {\r\n this.articles.forEach(x => {\r\n if (x.annotation) x.annotation = this.sanitizer.bypassSecurityTrustHtml(x.annotation);\r\n })\r\n }\r\n });\r\n }\r\n}","
0\">\r\n
\r\n

\r\n {{sen['article-list-related-title']}}\r\n

\r\n\r\n \r\n
\r\n
","import {ArticleBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {ArticleService} from \"./article.service\";\r\nimport {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {take} from \"rxjs/operators\";\r\nimport {ArticleListPlace} from \"./common\";\r\n\r\n\r\n@Component({\r\n templateUrl: './article-list.html',\r\n selector: 'cmp-article-list',\r\n styleUrls: ['../../assets/styles/2-components/article-list.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleListComponent extends Translatable {\r\n\r\n @Input() typeGrid: boolean = true;\r\n\r\n @Input() articles: Array = null;\r\n @Input() showActions: boolean = false;\r\n @Input() itemPlace: ArticleListPlace;\r\n @Input() showAnnotation: boolean = true;\r\n\r\n @Input() branchKey: string = null;\r\n @Input() childArticlesMaxCount: number = 0;\r\n\r\n rootArticle: ArticleBriefSelector;\r\n childArticles: Array;\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService, private articleSvc: ArticleService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit() {\r\n if (this.branchKey) {\r\n this.getBranchRootArticle(this.branchKey);\r\n this.childArticles = this.rootArticle.childArticles;\r\n } else if (this.articles) {\r\n this.childArticles = this.articles;\r\n } else {\r\n this.rootArticle = null;\r\n this.childArticles = null;\r\n }\r\n }\r\n\r\n ngOnChanges(){\r\n this.ngOnInit();\r\n }\r\n\r\n private getBranchRootArticle(branchKey: string) {\r\n this.articleSvc.getBranchRootArticle(branchKey)\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n this.rootArticle = res;\r\n if (this.rootArticle?.childArticles && this.childArticlesMaxCount && this.rootArticle.childArticles.length > this.childArticlesMaxCount) {\r\n this.rootArticle.childArticles = this.rootArticle.childArticles.slice(0, this.childArticlesMaxCount);\r\n }\r\n });\r\n }\r\n}","\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\nimport {ArticleService} from \"./article.service\";\r\nimport {ArticleListComponent} from \"./article-list.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ArticleListItemComponent} from \"./article-list-item.component\";\r\nimport {ArticleListMenuComponent} from \"./article-list-menu.component\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ArticleListRelatedComponent} from \"./article-list-related.component\";\r\nimport {ArticleListFilterComponent} from \"./article-list-filter.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n CustomPipesModule,\r\n ImageCacheBustModule\r\n ],\r\n declarations: [\r\n ArticleListComponent,\r\n ArticleListItemComponent,\r\n ArticleListMenuComponent,\r\n ArticleListRelatedComponent,\r\n ArticleListFilterComponent\r\n ],\r\n exports: [\r\n ArticleListComponent,\r\n ArticleListItemComponent,\r\n ArticleListMenuComponent,\r\n ArticleListRelatedComponent,\r\n ArticleListFilterComponent\r\n ],\r\n providers: [\r\n ArticleService\r\n ]\r\n})\r\n\r\nexport class ArticleListModule {\r\n}\r\n","import {Component, EventEmitter, Output, ViewEncapsulation} from '@angular/core';\r\nimport {ArticleBaseSelector, Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Component({\r\n templateUrl: '../../tpl/article-main-menu.html',\r\n selector: 'cmp-article-main-menu',\r\n styleUrls: ['../../assets/styles/3-layout/nav-links.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleMainMenuComponent extends Translatable {\r\n\r\n articles: ArticleBaseSelector[];\r\n @Output() noArticles: EventEmitter = new EventEmitter();\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService, private http: HttpClient) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n getArticles(): void {\r\n this.http.get(`api/article/getMainMenuLinks`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(\r\n res => {\r\n this.articles = res;\r\n if (!this.articles || this.articles.length === 0) {\r\n this.noArticles.emit(true);\r\n }\r\n },\r\n () => {\r\n this.noArticles.emit(true);\r\n }\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getArticles();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n}\r\n","
\r\n \r\n
","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {ArticleBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {ArticleService} from \"./article.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'cmp-articles-news',\r\n templateUrl: '../../tpl/article-news.html',\r\n styleUrls: ['../../assets/styles/2-components/article-list.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleNewsComponent extends Translatable {\r\n\r\n articles: Array;\r\n imagePathPrefix: string;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n\r\n constructor(public dataSvc: DataService, private artSvc: ArticleService, seSvc: SettingsService,\r\n private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n\r\n this.imagePathPrefix = seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n private sanitizeArticles(input: Array): Array {\r\n if (!input || !input.length) {\r\n return null;\r\n }\r\n\r\n return input.map(a => this.sanitizeArticle(a));\r\n }\r\n\r\n private sanitizeArticle(input: ArticleBriefSelector): ArticleBriefSelector {\r\n const tmp = input;\r\n if (tmp.annotation) tmp.annotation = this.sanitizer.bypassSecurityTrustHtml((tmp.annotation));\r\n return tmp;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getData();\r\n }\r\n\r\n private getData() {\r\n this.artSvc.getNews()\r\n .subscribe((res) => {\r\n this.articles = this.sanitizeArticles(res);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n}\r\n","\r\n","/**\r\n * Module for full article page route.\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {PaginationModule} from 'ngx-bootstrap/pagination';\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {BreadcrumbsModule} from \"../breadcrumbs/breadcrumbs.module\";\r\nimport {ArticleMainMenuComponent} from \"./article-main-menu.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ArticleService} from \"./article.service\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {ArticleNewsComponent} from \"./article-news.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n BreadcrumbsModule,\r\n CommonModule,\r\n FormsModule,\r\n ImageCacheBustModule,\r\n RouterModule,\r\n PaginationModule.forRoot()\r\n ],\r\n declarations: [\r\n ArticleMainMenuComponent,\r\n ArticleNewsComponent\r\n ],\r\n exports: [\r\n ArticleMainMenuComponent,\r\n ArticleNewsComponent\r\n ],\r\n providers: [\r\n ArticleService\r\n ]\r\n})\r\n\r\nexport class ArticleModule {\r\n}\r\n","/**\r\n * Serves article data, can be injected when needed (child injector).\r\n */\r\nimport {Injectable, Input, Directive} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {\r\n ArticleBaseWithChildrenSelector,\r\n ArticleBriefSelector,\r\n ArticleSelector,\r\n ErrorPageSelector, PagedResponse\r\n} from \"../../interfaces/general\";\r\nimport {AsyncSubject, Observable} from \"rxjs\";\r\nimport {ArticlePageRequest} from \"../inspiration/common\";\r\n\r\n\r\n@Directive()\r\n@Injectable()\r\nexport class ArticleService {\r\n\r\n @Input() childIndex: number = -1;\r\n\r\n private footerContainerArticleCalled: boolean = false;\r\n private _asyncSubject: AsyncSubject = new AsyncSubject();\r\n\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n getArticle(id: string): Observable {\r\n return this.http.get(`api/article/${id}`);\r\n }\r\n\r\n getBreadcrumbs(id: string | number): any {\r\n return this.http.get(`api/article/breadcrumb/${id}`);\r\n }\r\n\r\n getNews(): Observable> {\r\n return this.http.get>('api/article/news');\r\n }\r\n\r\n getFooterArticles(): Observable {\r\n //https://stackoverflow.com/questions/33675155/creating-and-returning-observable-from-angular-2-service\r\n if (!this.footerContainerArticleCalled) {\r\n this.footerContainerArticleCalled = true;\r\n let sub = this.http.get(`api/article/getFooterMenuLinks`)\r\n .subscribe(\r\n (res) => {\r\n this._asyncSubject.next(res);\r\n this._asyncSubject.complete();\r\n sub.unsubscribe();\r\n }\r\n );\r\n }\r\n return this._asyncSubject;\r\n }\r\n\r\n getArticle404(): Observable {\r\n return this.http.get('api/error/getErrorPage/404');\r\n }\r\n\r\n getBranchRootArticle(branchKey: string): Observable {\r\n return this.http.get('api/article/branch-root-article/' + branchKey);\r\n }\r\n\r\n getArticleCodeChildren(req: ArticlePageRequest): Observable> {\r\n return this.http.post>(`api/article/list-children-code`, req)\r\n }\r\n}\r\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {AvailabilitySetting, SettingsService} from \"../../services/settings.service\";\r\nimport {ProductDetailModel} from \"../product/common\";\r\n\r\n@Component({\r\n selector: 'cmp-availability',\r\n templateUrl: './availability.html',\r\n styleUrls: [],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class AvailabilityComponent extends Translatable {\r\n\r\n @Input() availabilitySetting: AvailabilitySetting;\r\n\r\n private _displayModel: ProductDetailModel;\r\n @Input() set displayModel(value: ProductDetailModel) {\r\n this._displayModel = value;\r\n this.unitShortCut = this.getUnitShortCut();\r\n this.availabilityName = this.getAvailabilityName();\r\n }\r\n\r\n get displayModel(): ProductDetailModel {\r\n return this._displayModel;\r\n }\r\n\r\n unitShortCut: string = '';\r\n availabilityName: string = '';\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n private getUnitShortCut(): string {\r\n let ret = '';\r\n if (this.displayModel?.unit?.shortCut) {\r\n ret = ' ' + this.displayModel.unit.shortCut;\r\n }\r\n return ret;\r\n }\r\n\r\n private getAvailabilityName(): string {\r\n let ret = '';\r\n if (this.displayModel?.availability?.name) {\r\n ret = ' ' + this.displayModel.availability.name;\r\n }\r\n return ret;\r\n }\r\n}","\r\n
0; else elseAvail\"\r\n [innerHTML]=\"(displayModel?.qtyInStock | number: '1.0-0') + unitShortCut + ' ' + sen['product-in-stock']\"\r\n class=\"product__availability product__availability--green\">\r\n
\r\n\r\n \r\n
\r\n {{sen['product-not-in-stock']}}\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n {{availabilityName.length ? availabilityName : ' '}}\r\n
\r\n
\r\n\r\n\r\n
0; else elseAvail\" class=\"product__availability product__availability--green\"\r\n [innerHTML]=\"(displayModel?.qtyInStock | number: '1.0-0') + unitShortCut + availabilityName\"\r\n >\r\n
\r\n\r\n \r\n
\r\n {{sen['product-not-in-stock']}}\r\n
\r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {AvailabilityComponent} from \"./availability.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n\r\n CommonModule\r\n ],\r\n declarations: [\r\n AvailabilityComponent\r\n ],\r\n exports: [\r\n AvailabilityComponent\r\n ],\r\n providers: [\r\n ]\r\n})\r\n\r\nexport class AvailabilityModule {\r\n}\r\n","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {IBannerDefinition, ISlide} from \"../banners-common/common\";\r\n\r\n@Component({\r\n templateUrl: 'banner-stripe.html',\r\n selector: 'cmp-banner-stripe',\r\n styleUrls: ['../../assets/styles/2-components/main-slider.scss'],\r\n})\r\n\r\nexport class BannerStripeComponent extends Translatable {\r\n\r\n @Input() codeName: string;\r\n @Input() categoryId: number = 0;\r\n\r\n @Output() hasSlides: EventEmitter = new EventEmitter();\r\n @Output() dataLoaded: EventEmitter = new EventEmitter();\r\n\r\n bannerDef: IBannerDefinition;\r\n private _slides: ISlide[];\r\n set slides(value: ISlide[]) {\r\n this._slides = value;\r\n\r\n if (!value || !value.length) {\r\n this.hasSlides.emit(false);\r\n } else {\r\n this.hasSlides.emit(true);\r\n }\r\n }\r\n\r\n get slides(): ISlide[] {\r\n return this._slides;\r\n }\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {BannerStripeComponent} from \"./banner-stripe.component\";\r\nimport {CarouselModule} from \"ngx-bootstrap/carousel\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {CategoryBannerComponent} from \"./category-banner.component\";\r\nimport {IndexBannerComponent} from \"./index-banner.component\";\r\nimport {SmallBannerComponent} from \"./small-banner.component\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CarouselModule.forRoot(),\r\n ImageCacheBustModule,\r\n CustomPipesModule\r\n ],\r\n declarations: [\r\n BannerStripeComponent,\r\n CategoryBannerComponent,\r\n IndexBannerComponent,\r\n SmallBannerComponent\r\n ],\r\n exports: [\r\n BannerStripeComponent,\r\n CategoryBannerComponent,\r\n IndexBannerComponent,\r\n SmallBannerComponent\r\n ]\r\n})\r\n\r\nexport class BannerStripeModule {}\r\n","import {Component, OnChanges, SimpleChanges, ViewEncapsulation} from \"@angular/core\";\r\nimport {BannerStripeComponent} from \"./banner-stripe.component\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Router} from \"@angular/router\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {IBannerDefinition, ISlide} from \"../banners-common/common\";\r\nimport {take} from \"rxjs/operators\";\r\n\r\ndeclare const $: any;\r\n\r\n@Component({\r\n selector: 'cmp-category-banner',\r\n templateUrl: 'category-banner.component.html',\r\n styleUrls: ['../../assets/styles/2-components/main-slider.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryBannerComponent extends BannerStripeComponent implements OnChanges {\r\n\r\n private delay: number;\r\n bannerImagePathPrefix: string = this.seSvc.settings.newImageServerUrl + '/banner_homepage/1250/550/';\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private http: HttpClient, private router: Router,\r\n private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.categoryId > 0) {\r\n if (changes['categoryId'] && changes['categoryId'].currentValue) {\r\n\r\n try {\r\n $(\".js-main-slider\").slick('unslick');\r\n } catch {\r\n }\r\n this.getCategoryBanner();\r\n }\r\n }\r\n }\r\n\r\n private getCategoryBanner(): void {\r\n\r\n let url = `api/banner/${this.codeName}/false`;\r\n\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n this.bannerDef = res;\r\n this.http.get(`api/banner/getSlide/${this.seSvc.culture.cultureId}/${this.categoryId}/${this.bannerDef.id}`)\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n setTimeout(() => {\r\n this.dataLoaded.emit();\r\n }, 0);\r\n\r\n this.slides = res;\r\n if (this.slides.length > 0) this.delay = this.slides[0].time;\r\n this.slides.forEach((elem) => {\r\n if (elem.imageUrl) elem.imageUrl = this.bannerImagePathPrefix + elem.imageUrl;\r\n if (elem.htmlText) elem.htmlText = this.sanitizer.bypassSecurityTrustHtml(elem.htmlText);\r\n });\r\n const handle = setTimeout(() => {\r\n this.sliderInit();\r\n clearTimeout(handle);\r\n }, 125);\r\n })\r\n })\r\n }\r\n\r\n slideClick(url: string, inNewWindow: boolean): void {\r\n if (!url) return;\r\n if (!inNewWindow) {\r\n if (url.match('http://') || url.match('https://')) location.href = url;\r\n else this.router.navigateByUrl(url).then(() => {\r\n })\r\n } else {\r\n if (url.match('http://') || url.match('https://')) window.open(`${url}`, '_blank', 'noopener');\r\n else {\r\n // FlexMvc doesn't apply, if you have loc binding in IIS\r\n const middlePart = /localhost/.test(location.href) ? '/FlexMvc/' : '/';\r\n window.open(`${location.origin}${middlePart}${url}`, '_blank', 'noopener');\r\n }\r\n }\r\n }\r\n\r\n private sliderInit() {\r\n (function (delay: number) {\r\n $(\".js-main-slider\").slick({\r\n adaptiveHeight: true,\r\n dots: true,\r\n arrow: true,\r\n autoplay: true,\r\n autoplaySpeed: delay,\r\n infinite: true,\r\n pauseOnHover: true,\r\n nextArrow: '
',\r\n prevArrow: '
'\r\n })\r\n .on('afterChange', function (_: any, slick: any) {\r\n let slideTime = $('div[data-slick-index=\"' + slick.currentSlide + '\"]').data(\"time\");\r\n $(\".js-main-slider\").slick(\"setOption\", \"autoplaySpeed\", slideTime);\r\n });\r\n })(this.delay)\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {BannerStripeComponent} from \"./banner-stripe.component\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Router} from \"@angular/router\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {IBannerDefinition} from \"../banners-common/common\";\r\nimport {take} from \"rxjs/operators\";\r\nimport {ScrollHelper} from \"../../helpers/scroll.helper\";\r\n\r\ndeclare const $: any;\r\n\r\n@Component({\r\n selector: 'cmp-index-banner',\r\n templateUrl: 'index-banner.component.html',\r\n styleUrls: ['../../assets/styles/4-routes/index/index-header.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class IndexBannerComponent extends BannerStripeComponent {\r\n\r\n imageServerprefix: string = this.seSvc.settings.newImageServerUrl + '/banner_homepage';\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private http: HttpClient, private router: Router,\r\n private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc,);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.codeName = 'hp_banner';\r\n this.getBanner();\r\n }\r\n\r\n private getBanner(): void {\r\n\r\n let url = `api/banner/${this.codeName}/true`;\r\n\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe((res: IBannerDefinition) => {\r\n setTimeout(() => {\r\n this.dataLoaded.emit();\r\n }, 0);\r\n\r\n this.bannerDef = res;\r\n this.slides = this.bannerDef.slides;\r\n this.slides.forEach((elem) => {\r\n if (elem.htmlText) elem.htmlText = this.sanitizer.bypassSecurityTrustHtml(elem.htmlText);\r\n });\r\n })\r\n }\r\n\r\n slideClick(url: string): void {\r\n if (!url) return;\r\n if (url.match('http://') || url.match('https://')) location.href = url;\r\n else this.router.navigateByUrl(url).then(() => {\r\n })\r\n }\r\n\r\n scrollToProducts(where: string): void {\r\n ScrollHelper.scrollToAnchor(where);\r\n\r\n }\r\n\r\n}\r\n","
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n {{sen['banner-hp-look-for-more']}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {BannerStripeComponent} from \"./banner-stripe.component\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Router} from \"@angular/router\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {IBannerDefinition} from \"../banners-common/common\";\r\nimport {take} from \"rxjs/operators\";\r\n\r\ndeclare const $: any;\r\n\r\n@Component({\r\n selector: 'cmp-small-banner',\r\n templateUrl: './small-banner.html',\r\n styleUrls: ['../../assets/styles/2-components/small-banner.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class SmallBannerComponent extends BannerStripeComponent {\r\n\r\n imagePathPrefix: string = this.seSvc.settings.newImageServerUrl + '/banner_homepage';\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private http: HttpClient, private router: Router,\r\n private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc,);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.codeName = 'small_banner';\r\n this.getBanner();\r\n }\r\n\r\n private getBanner(): void {\r\n\r\n let url = `api/banner/${this.codeName}/true`;\r\n\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe((res: IBannerDefinition) => {\r\n setTimeout(() => {\r\n this.dataLoaded.emit();\r\n }, 0);\r\n\r\n this.bannerDef = res;\r\n this.slides = this.bannerDef.slides;\r\n if (this.slides.length > 0) {\r\n if (this.slides[0].htmlText) this.slides[0].htmlText = this.sanitizer.bypassSecurityTrustHtml(this.slides[0].htmlText);\r\n }\r\n })\r\n }\r\n\r\n\r\n slideClick(url: string, inNewWindow: boolean): void {\r\n if (!url) return;\r\n if (!inNewWindow) {\r\n if (url.match('http://') || url.match('https://')) location.href = url;\r\n else this.router.navigateByUrl(url).then(() => {\r\n })\r\n } else {\r\n if (url.match('http://') || url.match('https://')) window.open(`${url}`, '_blank', 'noopener');\r\n else {\r\n // FlexMvc doesn't apply, if you have loc binding in IIS\r\n const middlePart = /localhost/.test(location.href) ? '/FlexMvc/' : '/';\r\n window.open(`${location.origin}${middlePart}${url}`, '_blank', 'noopener');\r\n }\r\n }\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n {{slide.title}}\r\n
\r\n\r\n \r\n {{slide.buttonTitle}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
","/**\r\n * Component displaying breadcrumbs.\r\n */\r\nimport {Component, Input, OnDestroy, ViewEncapsulation} from '@angular/core';\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {BreadCrumbInfo} from \"../../interfaces/general\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\n\r\ninterface BcInfoInternal extends BreadCrumbInfo {\r\n link: any[];\r\n}\r\n\r\n@Component({\r\n selector: 'cmp-breadcrumb',\r\n templateUrl: '../../tpl/breadcrumb.html',\r\n styleUrls: ['../../assets/styles/2-components/breadcrumb.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class BreadcrumbComponent implements OnDestroy {\r\n @Input() classModificator: string;\r\n @Input() homePrefix: string;\r\n bcInfo: BreadCrumbInfo[];\r\n bcInfoInternal: BcInfoInternal[];\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService) {\r\n dataSvc.breadcrumbChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(res => {\r\n\r\n if(!res){\r\n this.bcInfo = null;\r\n this.bcInfoInternal=null;\r\n return;\r\n }\r\n\r\n let home: BreadCrumbInfo = {displayName: this.homePrefix, targetSeoTail: ''};\r\n this.bcInfo = [home, ...res];\r\n\r\n this.bcInfoInternal = [];\r\n this.bcInfo.forEach((elem) => {\r\n let link: any[];\r\n let slash: string;\r\n if (!elem.targetSeoTail) {\r\n slash = '/';\r\n }\r\n else {\r\n slash = elem.targetSeoTail[0] === '/' ? '' : '/';\r\n }\r\n\r\n if (elem.entityPrefix) {\r\n link = [`/${elem.entityPrefix}/${elem.targetId}${slash}${elem.targetSeoTail}`]\r\n } else {\r\n\r\n link = [`${slash}${elem.targetSeoTail}`];\r\n }\r\n let newElem: BcInfoInternal = {\r\n entityPrefix: elem.entityPrefix,\r\n displayName: elem.displayName,\r\n targetId: elem.targetId,\r\n targetSeoTail: elem.targetSeoTail,\r\n link: link,\r\n queryParams: elem.queryParams,\r\n redirectUrl: elem.redirectUrl\r\n };\r\n this.bcInfoInternal.push(newElem)\r\n });\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {{bc.displayName | crophtml}}\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {{bc.displayName | crophtml}}\r\n
\r\n
\r\n
\r\n
\r\n
","/**\r\n * Module for breadcrumbs support.\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {BreadcrumbComponent} from \"./breadcrumb.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, RouterModule, CustomPipesModule,ImageCacheBustModule],\r\n declarations: [BreadcrumbComponent],\r\n exports: [BreadcrumbComponent]\r\n})\r\n\r\nexport class BreadcrumbsModule {}","/**\r\n * Little shopping cart view available on every page.\r\n */\r\nimport {Component, ViewEncapsulation} from '@angular/core';\r\nimport {CartService} from \"../cart/cart.service\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CartItemSelectorBrief} from \"../cart/common\";\r\nimport {isLocalImagePath} from \"../../helpers/string.helper\";\r\n\r\n@Component({\r\n selector: 'cmp-cart-indicator',\r\n templateUrl: '../../tpl/cart-indicator.html',\r\n styleUrls: ['../../assets/styles/3-layout/header/mini-cart.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CartIndicatorComponent extends Translatable {\r\n\r\n imagePathPrefix: string;\r\n currencySymbol: string;\r\n decimalPattern: string = '1.0-0';\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n public cartSvc: CartService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.decimalPattern = `1.${this.seSvc.settings.decimalSettings.Basket}-${this.seSvc.settings.decimalSettings.Basket}`;\r\n this.currencySymbol = this.seSvc.settings.currencies[this.seSvc.currencyId];\r\n this.imagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n removeFromCart(cartItemId: number) {\r\n let req: CartItemSelectorBrief = {\r\n id: cartItemId\r\n };\r\n this.cartSvc.removeFromCart(req);\r\n }\r\n\r\n isExternalImage(path: string): boolean {\r\n return !isLocalImagePath(path);\r\n }\r\n\r\n}\r\n","\r\n","/**\r\n * Feature module for {@link CartIndicatorComponent}.\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CartIndicatorComponent} from \"./cart-indicator.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n RouterModule,\r\n CustomPipesModule\r\n ],\r\n declarations: [CartIndicatorComponent],\r\n exports: [CartIndicatorComponent]\r\n})\r\n\r\nexport class CartIndicatorModule {}\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {CartItemSelectorFull} from \"../cart/common\";\r\nimport {Subject} from \"rxjs\";\r\nimport {GeneralDialogConfig} from \"../general-dialog/general-dialog-config\";\r\nimport {GeneralDialogRef} from \"../general-dialog/common\";\r\nimport {CartDialogConfig} from \"./common\";\r\nimport {isLocalImagePath} from \"../../helpers/string.helper\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-cart-change-modal',\r\n templateUrl: '../../tpl/cart-change-modal.html',\r\n styleUrls: ['../../assets/styles/2-components/buy-window.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CartChangeModalComponent extends Translatable {\r\n\r\n cartItem: CartItemSelectorFull;\r\n productImagePathPrefix: string;\r\n timeoutId: any;\r\n timeOutDelay: number = 0;\r\n decimalPattern: string = '1.0-0';\r\n ngUnsubscribe: Subject = new Subject();\r\n currencySymbol: string;\r\n ext: string = '';\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private config: GeneralDialogConfig,\r\n private dialogRef: GeneralDialogRef\r\n ) {\r\n super(dataSvc, seSvc);\r\n\r\n if (this.config && this.config.data) {\r\n this.cartItem = this.config.data.cartItem;\r\n this.ext = isLocalImagePath(this.cartItem.productDetail?.imagePath) ? '' : '/ext';\r\n }\r\n\r\n this.currencySymbol = this.seSvc.settings.currencies[this.seSvc.currencyId];\r\n this.productImagePathPrefix = seSvc.settings.newImageServerUrl;\r\n this.decimalPattern = `1.${this.seSvc.settings.decimalSettings.ProductBox}-${this.seSvc.settings.decimalSettings.Basket}`;\r\n\r\n if (this.timeOutDelay > 0) {\r\n if (this.timeoutId) clearTimeout(this.timeoutId);\r\n this.timeoutId = setTimeout(() => {\r\n this.closeCartAddDialog();\r\n }, this.timeOutDelay);\r\n }\r\n }\r\n\r\n closeCartAddDialog(): void {\r\n this.dialogRef.close();\r\n this.cartItem = null;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {{cartItem.productDetail?.name}}\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {CartChangeModalComponent} from \"./cart-change-modal.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {GeneralDialogModule} from \"../general-dialog/general-dialog.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n RouterModule,\r\n GeneralDialogModule,\r\n CustomPipesModule\r\n ],\r\n declarations: [CartChangeModalComponent],\r\n exports: [CartChangeModalComponent]\r\n})\r\n\r\nexport class CartChangeModalModule {}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {\r\n loadFromLocalStorage, removeFromLocalStorage,\r\n saveToLocalStorage\r\n} from \"../../helpers/cookie.helper\";\r\nimport {CartTokenSelector} from \"../../interfaces/general\";\r\n\r\n@Injectable()\r\nexport class CartTokenService {\r\n\r\n constructor() {\r\n this._tokens = loadFromLocalStorage(this._tokensLocalStorageKey);\r\n }\r\n\r\n private _tokensLocalStorageKey: string = 'cartTokens';\r\n private _tokens: Array;\r\n\r\n set cartTokens(value: Array) {\r\n this._tokens = value;\r\n if (value && value.length) {\r\n saveToLocalStorage(this._tokensLocalStorageKey, value);\r\n } else {\r\n removeFromLocalStorage(this._tokensLocalStorageKey);\r\n }\r\n }\r\n\r\n get cartTokens(): Array {\r\n return this._tokens;\r\n }\r\n\r\n get cartToken(): string {\r\n if (this.cartTokens && this.cartTokens.length) {\r\n return this.cartTokens[0].cartToken;\r\n }\r\n return null;\r\n }\r\n\r\n clear(): void {\r\n this.cartTokens = null;\r\n }\r\n\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {finalize, take} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Observable, Subject} from \"rxjs\";\r\nimport {\r\n AddDeliveryPaymentRequest,\r\n CartItemSelectorBrief,\r\n CartItemSelectorFull,\r\n CartSelector, DeliveryPayment, GiftPriceSelector, GiftSelector\r\n} from \"./common\";\r\nimport {AddressSelector, CompanySelector, UserSelector} from \"../address/common\";\r\nimport {GeneralDialogService} from \"../general-dialog/general-dialog.service\";\r\nimport {CartDialogConfig} from \"../cart-modal/common\";\r\nimport {GeneralDialogConfig} from \"../general-dialog/general-dialog-config\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CartChangeModalComponent} from \"../cart-modal/cart-change-modal.component\";\r\nimport {CartTokenService} from \"./cart-token.service\";\r\nimport {DeliveryPaymentService} from \"../delivery-payment/delivery-payment.service\";\r\nimport {loadFromSession, removeFromSession} from \"../../helpers/cookie.helper\";\r\n\r\n@Injectable()\r\nexport class CartService {\r\n\r\n orderHash: string;\r\n\r\n cartContentChanged: EventEmitter;\r\n cartItemCountChanged: EventEmitter;\r\n cartInvoiceAddressChanged: EventEmitter;\r\n cartDeliveryAddressChanged: EventEmitter;\r\n cartWithDeliveryAddressChanged: EventEmitter;\r\n\r\n public isNextStep4: boolean = false;\r\n\r\n private _cart: CartSelector;\r\n private persistTimeOut: any;\r\n defaultPersistMilliseconds: number = 300;\r\n\r\n set cart(value: CartSelector) {\r\n this._cart = value;\r\n if (this.cart && !this._cart?.maxStep) {\r\n const savedMaxStep = Number(loadFromSession(this.seSvc.cartMaxStepSessionKey));\r\n if (!Number.isNaN(savedMaxStep)) {\r\n this.cart.maxStep = savedMaxStep;\r\n }\r\n }\r\n\r\n }\r\n\r\n //region New Implementation\r\n //cartToken: string;\r\n //end region\r\n\r\n get cart(): CartSelector {\r\n return this._cart;\r\n }\r\n\r\n constructor(private dataSvc: DataService, private seSvc: SettingsService, private http: HttpClient,\r\n private dialogSvc: GeneralDialogService, private cartTokenSvc: CartTokenService,\r\n private delPaySvc: DeliveryPaymentService) {\r\n this.cartContentChanged = new EventEmitter();\r\n this.cartItemCountChanged = new EventEmitter();\r\n this.cartInvoiceAddressChanged = new EventEmitter();\r\n this.cartDeliveryAddressChanged = new EventEmitter();\r\n this.cartWithDeliveryAddressChanged = new EventEmitter();\r\n\r\n this.getCartContentForToken();\r\n\r\n this.delPaySvc.deliveryPaymentChanged\r\n .subscribe((res: DeliveryPayment) => {\r\n this.addDeliveryAndPayment(res);\r\n })\r\n\r\n\r\n this.initiateModalDialogHook();\r\n }\r\n\r\n private initiateModalDialogHook() {\r\n this.cartItemCountChanged\r\n .subscribe((res: CartItemSelectorBrief) => {\r\n\r\n if (res && !res.fromCart && !res.disableMessage) {\r\n\r\n let cartItem = this.productList.find(p => p.id == res.id);\r\n this.showCartAddDialog(cartItem);\r\n }\r\n });\r\n }\r\n\r\n private showCartAddDialog(cartItem: CartItemSelectorFull): void {\r\n const data: CartDialogConfig = {cartItem: cartItem};\r\n const config: GeneralDialogConfig = {\r\n data: data,\r\n cssClassModifier: 'buy-window',\r\n isCloseAble: true,\r\n title: this.seSvc.sen['cart-modal-title-insert']\r\n };\r\n const dialogRef = this.dialogSvc.open(CartChangeModalComponent, config);\r\n dialogRef.afterClosed\r\n .subscribe(() => {\r\n });\r\n }\r\n\r\n get productList(): CartItemSelectorFull[] {\r\n if (this.cart && this.cart.cartContent) {\r\n return this.cart.cartContent.filter(cc => cc.productDetail);\r\n }\r\n return null;\r\n }\r\n\r\n get giftList(): CartItemSelectorFull[] {\r\n if (this.cart && this.cart.cartContent) {\r\n return this.cart.cartContent.filter(cc => cc.giftProductDetail);\r\n }\r\n return null;\r\n }\r\n\r\n get coupons(): CartItemSelectorFull[] {\r\n if (this.cart && this.cart.cartContent) {\r\n return this.cart.cartContent.filter(cc => cc.couponDetail);\r\n }\r\n return null;\r\n }\r\n\r\n private _generalPendingOperation: number = 0;\r\n set generalPendingOperation(value: boolean) {\r\n if (value) {\r\n this._generalPendingOperation++;\r\n } else {\r\n this._generalPendingOperation--;\r\n }\r\n }\r\n\r\n get generalPendingOperation(): boolean {\r\n return this._generalPendingOperation > 0;\r\n }\r\n\r\n addToCartMulti(items: CartItemSelectorBrief[]) {\r\n this.dataSvc.dataLoading = true;\r\n let url = `api/cart/add-to-cart-multi`;\r\n\r\n items.forEach((i) => {\r\n i.fromCart = false;\r\n });\r\n\r\n this.http.post(url, items)\r\n .pipe(take(1))\r\n .pipe(finalize(() => {\r\n this.dataSvc.dataLoading = false;\r\n }))\r\n .subscribe(\r\n (res: CartSelector) => {\r\n //this.token = res.cartToken;\r\n this.cart = res;\r\n this.cartContentChanged.emit(res);\r\n\r\n this.cartItemCountChanged.emit();\r\n }, () => {\r\n\r\n });\r\n }\r\n\r\n addToCart(cart: CartItemSelectorBrief): void {\r\n\r\n this.dataSvc.dataLoading = true;\r\n let url = `api/cart/addToCart`;\r\n\r\n cart.fromCart = false;\r\n\r\n this.http.post(url, cart)\r\n .pipe(take(1))\r\n .pipe(finalize(() => {\r\n this.dataSvc.dataLoading = false;\r\n }))\r\n .subscribe(\r\n (res: CartSelector) => {\r\n //this.token = res.cartToken;\r\n this.cart = res;\r\n this.cartContentChanged.emit(res);\r\n\r\n let full = this.productList.find(p => p.productId == cart.productId);\r\n if (full) full.disableMessage = cart.disableMessage;\r\n this.cartItemCountChanged.emit(full);\r\n }, () => {\r\n\r\n });\r\n }\r\n\r\n addGiftToCart(cart: CartItemSelectorBrief): void {\r\n\r\n this.dataSvc.dataLoading = true;\r\n let url = `api/cart/addGiftToCart`;\r\n\r\n cart.fromCart = false;\r\n\r\n this.http.post(url, cart)\r\n .pipe(take(1))\r\n .pipe(finalize(() => {\r\n this.dataSvc.dataLoading = false;\r\n }))\r\n .subscribe(\r\n (res: CartSelector) => {\r\n this.cart = res;\r\n this.cartContentChanged.emit(res);\r\n\r\n }, () => {\r\n\r\n });\r\n }\r\n\r\n getCartContentForToken(): void {\r\n let url = 'api/cart/getCartContentForToken';\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe((res: CartSelector) => {\r\n this.cart = res;\r\n this.delPaySvc.deliveryPayment = {delivery: this.cart.delivery, payment: this.cart.payment};\r\n this.cartContentChanged.emit(res);\r\n });\r\n }\r\n\r\n removeFromCart(cart: CartItemSelectorBrief): void {\r\n this.dataSvc.dataLoading = true;\r\n\r\n let url = `api/cart/removeFromCart`;\r\n\r\n this.http.post(url, cart)\r\n .pipe(take(1))\r\n .subscribe(\r\n () => {\r\n this.dataSvc.dataLoading = false;\r\n this.getCartContentForToken();\r\n },\r\n () => {\r\n this.dataSvc.dataLoading = false;\r\n }\r\n );\r\n }\r\n\r\n changeCount(cart: CartItemSelectorBrief): void {\r\n\r\n this.dataSvc.dataLoading = true;\r\n\r\n let url = `api/cart/changeCount`;\r\n\r\n this.http.post(url, cart)\r\n .pipe(take(1))\r\n .pipe(\r\n finalize(() => {\r\n this.dataSvc.dataLoading = false;\r\n })\r\n )\r\n .subscribe((res: CartSelector) => {\r\n this.cart = res;\r\n let changedItem = this.cart.cartContent.find(item => item.productId == cart.productId);\r\n if (changedItem) {\r\n changedItem.fromCart = cart.fromCart;\r\n changedItem.disableMessage = cart.disableMessage;\r\n this.cartItemCountChanged.emit(changedItem);\r\n }\r\n this.cartContentChanged.emit(res);\r\n }, () => {\r\n\r\n });\r\n\r\n }\r\n\r\n changeProductCount(productId: number, delta: number): void {\r\n delta = parseFloat(delta.toString());\r\n let cartItem = this.cart.cartContent.find(cc => cc.productDetail && cc.productDetail.id == productId);\r\n if (!cartItem) {\r\n return;\r\n }\r\n let cart: CartItemSelectorBrief = {\r\n count: cartItem.count + delta,\r\n id: cartItem.id,\r\n fromCart: true\r\n };\r\n this.changeCount(cart);\r\n }\r\n\r\n getCouponFromServer(code: string): any {\r\n let url = `api/coupon/${code}`;\r\n return this.http.get(url)\r\n }\r\n\r\n getGifts(priceLevel: number): Observable {\r\n let url = `api/gift/getEnabled`;\r\n let request: GiftPriceSelector = {\r\n priceLevel: priceLevel\r\n };\r\n return this.http.post(url, request)\r\n }\r\n\r\n addCouponToCart(couponCode: string): Observable {\r\n let url = `api/cart/addCouponToCart`;\r\n const data = {\r\n couponCode: couponCode,\r\n Token: this.cartTokenSvc.cartToken,\r\n FromCart: false\r\n };\r\n\r\n let sub = new Subject();\r\n\r\n this.http.post(url, data)\r\n .pipe(take(1))\r\n .subscribe((res: CartSelector) => {\r\n if (res) {\r\n\r\n /*\r\n (res: CartSelector) => {\r\n this.token = res.cartToken;\r\n this.cart = res;\r\n this.cartContentChanged.emit(res);\r\n\r\n }\r\n */\r\n this.cart = res;\r\n this.cartContentChanged.emit(res);\r\n //this.couponChanged();\r\n }\r\n sub.next(res);\r\n });\r\n\r\n\r\n return sub;\r\n }\r\n\r\n addDeliveryAndPayment(deliveryAndPayment: DeliveryPayment): void {\r\n let url = \"api/cart/add-delivery-and-payment\";\r\n\r\n if (!deliveryAndPayment || !deliveryAndPayment.delivery || !deliveryAndPayment.payment) {\r\n return;\r\n }\r\n\r\n let request: AddDeliveryPaymentRequest = {\r\n deliveryId: deliveryAndPayment.delivery.id,\r\n paymentId: deliveryAndPayment.payment.id,\r\n branch: deliveryAndPayment.delivery.branch\r\n };\r\n\r\n this.http.post(url, request)\r\n .pipe(\r\n take(1)\r\n )\r\n .subscribe((res: CartSelector) => {\r\n if (res) {\r\n this.cart = res;\r\n // todo: toto je hack, musel jsem to umistit tady\r\n // protoze navratovy cart selector mi tu nastavenou hodnotu delivery a payment prerazil\r\n // cili to je treba tady persistovat a vratit, pokud se vraci cely cart vcetne dopravy a platby\r\n // nebo je nevracet na tomto miste\r\n this._cart.delivery = deliveryAndPayment.delivery;\r\n this._cart.payment = deliveryAndPayment.payment;\r\n }\r\n });\r\n }\r\n\r\n couponChanged(): void {\r\n this.cartContentChanged.emit();\r\n }\r\n\r\n public emptyCart(): void {\r\n let url = 'api/cart/empty-cart';\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.resetCart();\r\n this.cartContentChanged.emit(null);\r\n }\r\n });\r\n }\r\n\r\n public emptyCartNextStep(): void {\r\n\r\n this.isNextStep4 = true;\r\n let url = 'api/cart/empty-cart';\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.resetCart();\r\n this.cartContentChanged.emit(this.cart);\r\n }\r\n });\r\n }\r\n\r\n public resetCart(): void {\r\n this.cart = {\r\n cartActionResult: null,\r\n cartContent: null,\r\n delivery: null,\r\n payment: null,\r\n priceTotalWithVat: null,\r\n priceTotalWithOutVat: null,\r\n priceWithoutPaymentAndDeliveryWithVat: null,\r\n priceWithoutPaymentAndDeliveryWithOutVat: null,\r\n itemsCount: null,\r\n deliveryFreeFrom: null,\r\n errorMessage_SenKey: null,\r\n //cartToken: null,\r\n fromCart: null,\r\n invoiceAddress: null,\r\n deliveryAddress: null,\r\n company: null,\r\n user: null,\r\n\r\n logToNewsletter: null,\r\n maxStep: null,\r\n withCompany: null,\r\n note: null,\r\n withDeliveryAddress: null,\r\n doNotSendHeurekaOvereno: false\r\n };\r\n removeFromSession(this.seSvc.cartMaxStepSessionKey);\r\n }\r\n\r\n public sendOrder(): any {\r\n let url = 'api/order/save';\r\n return this.http.post(url, this.cart);\r\n }\r\n\r\n onInvoiceAddressChanged(address: AddressSelector): void {\r\n this.cart.invoiceAddress = address;\r\n this.cartInvoiceAddressChanged.emit(this.cart.invoiceAddress);\r\n this.persist(this.defaultPersistMilliseconds);\r\n }\r\n\r\n onDeliveryAddressChanged(address: AddressSelector): void {\r\n this.cart.deliveryAddress = address;\r\n this.cartDeliveryAddressChanged.emit(this.cart.deliveryAddress);\r\n this.persist(this.defaultPersistMilliseconds);\r\n }\r\n\r\n onCompanyChanged(company: CompanySelector): void {\r\n this.cart.company = company;\r\n this.persist(this.defaultPersistMilliseconds);\r\n }\r\n\r\n onWithDeliveryAddressChanged(withDeliveryAddress: boolean): void {\r\n this.cart.withDeliveryAddress = withDeliveryAddress;\r\n this.cartWithDeliveryAddressChanged.emit(withDeliveryAddress);\r\n this.persist(this.defaultPersistMilliseconds);\r\n }\r\n\r\n onWithCompanyChanged(withCompany: boolean): void {\r\n this.cart.withCompany = withCompany;\r\n this.persist(this.defaultPersistMilliseconds);\r\n }\r\n\r\n onUserChanged(user: UserSelector): void {\r\n this.cart.user = user;\r\n this.persist(this.defaultPersistMilliseconds);\r\n }\r\n\r\n cleanCartOnLogout(): void {\r\n this.cartTokenSvc.clear();\r\n }\r\n\r\n persist(milliseconds: number) {\r\n if (milliseconds <= 0) {\r\n this.doPersist();\r\n return;\r\n }\r\n\r\n clearTimeout(this.persistTimeOut);\r\n this.persistTimeOut = setTimeout(() => {\r\n this.doPersist();\r\n }, milliseconds);\r\n }\r\n\r\n private doPersist() {\r\n const url = 'api/cart/persist-cart';\r\n const data = this.cart;\r\n this.http.post(url, data)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n //console.log(res);\r\n });\r\n }\r\n\r\n onLogToNewsletterChanged(newsSubsLog: boolean) {\r\n this.cart.logToNewsletter = newsSubsLog;\r\n this.persist(this.defaultPersistMilliseconds);\r\n }\r\n\r\n withCompanyEffectiveValue(): boolean {\r\n if (this.cart?.withCompany != null) {\r\n //if withCompany was explicitly set\r\n return this.cart.withCompany;\r\n }\r\n\r\n return !!this.cart?.company?.ic;\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewChildren,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {ProductParameterFilterComponent} from \"../product-parameter-filter/product-parameter-filter.component\";\r\nimport {ProductColorParameterFilterComponent} from \"../product-color-parameter-filter/product-color-parameter-filter.component\";\r\nimport {\r\n ProductSizeParametersFilterComponent\r\n} from \"../product-size-parameter-filter/product-size-parameters-filter.component\";\r\n\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-category-filter',\r\n templateUrl: './category-filter.html',\r\n styleUrls: ['../../assets/styles/2-components/filter.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryFilterComponent extends Translatable {\r\n\r\n private _filterActive: boolean;\r\n @Input() set filterActive(value: boolean) {\r\n if (value !== this._filterActive) {\r\n this.toggleResponsiveFilter(value);\r\n }\r\n this._filterActive = value;\r\n }\r\n\r\n @Output() isFilterOpen: EventEmitter = new EventEmitter();\r\n @Output() filterChanged: EventEmitter = new EventEmitter();\r\n\r\n filterSectionHide: boolean = false;\r\n\r\n @ViewChildren(ProductParameterFilterComponent) filters: QueryList = null;\r\n @ViewChild(ProductColorParameterFilterComponent) paramColorFilter: ProductColorParameterFilterComponent = null;\r\n @ViewChild(ProductSizeParametersFilterComponent) paramSizeFilter: ProductSizeParametersFilterComponent = null;\r\n\r\n priceFilterInitialized: EventEmitter = new EventEmitter();\r\n productFlagsFilterInitialized: EventEmitter = new EventEmitter();\r\n producerFilterInitialized: EventEmitter = new EventEmitter();\r\n paramFilterInitialized: EventEmitter = new EventEmitter();\r\n\r\n paramSectionFilterInitialized: EventEmitter = new EventEmitter();\r\n paramAplicationFilterInitialized: EventEmitter = new EventEmitter();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService, public catSvc: CategoryService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n toggleResponsiveFilter(shouldBeOpen: boolean): void {\r\n if (shouldBeOpen) {\r\n $(\"html\").addClass(\"filter-active\");\r\n $('.filter').addClass(\"filter--active\");\r\n } else {\r\n $(\"html\").removeClass(\"filter-active\");\r\n $(\"html\").removeClass(\"locked\");\r\n $('.filter').removeClass(\"filter--active\");\r\n }\r\n this.isFilterOpen.emit(shouldBeOpen);\r\n }\r\n\r\n closeAndSelect(): void {\r\n this.toggleResponsiveFilter(false);\r\n this.onFilterChanged();\r\n }\r\n\r\n closeAndRemove(): void {\r\n this.toggleResponsiveFilter(false);\r\n this.unCheckAll();\r\n }\r\n\r\n availableOnlyChanged(val: boolean): void {\r\n this.catSvc.showAvailableOnly = val;\r\n this.catSvc.pageIndex = 1;\r\n this.catSvc.getCategoryDetailData();\r\n }\r\n\r\n /* closeFilter() {\r\n this.filters.forEach(x=>x.UncheckParameter(paramId, valueId));\r\n this.paramColorFilter.UncheckParameter(paramId, valueId);\r\n this.paramSizeFilter.UncheckParameter(paramId, valueId);\r\n //this.toggleFilter(false);\r\n }*/\r\n\r\n onFilterChanged() {\r\n // console.log('CategoryFilter.onFilterChanged');\r\n this.filterChanged.emit()\r\n }\r\n\r\n unCheckAll() {\r\n this.filters.first.UncheckAllParameters();\r\n }\r\n\r\n UncheckParameter(paramId: number, valueId: number) {\r\n this.filters.forEach(x => x.UncheckParameter(paramId, valueId));\r\n this.paramColorFilter.UncheckParameter(paramId, valueId);\r\n this.paramSizeFilter.UncheckParameter(paramId, valueId);\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n {{sen['cancel-all-filters']}}\r\n
\r\n\r\n
\r\n {{sen['filter-result-link']}}\r\n
\r\n
\r\n
\r\n","/**\r\n * @description\r\n * Provides functionality for Product Catalogue\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CategoryFilterComponent} from \"./category-filter.component\";\r\nimport {PriceFilterModule} from \"../price-filter/price-filter.module\";\r\nimport {ProductFlagsFilterModule} from \"../product-flags-filter/product-flags-filter.module\";\r\nimport {ProducerFilterModule} from \"../producer-filter/producer-filter.module\";\r\nimport {ProductParameterFilterModule} from \"../product-parameter-filter/product-parameter-filter.module\";\r\nimport {\r\n ProductColorParameterFilterModule\r\n} from \"../product-color-parameter-filter/product-color-parameter-filter.module\";\r\nimport {ProductSizeParametersFilterModule} from \"../product-size-parameter-filter/product-size-parameters-filter.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n PriceFilterModule,\r\n ProductFlagsFilterModule,\r\n ProducerFilterModule,\r\n ProductParameterFilterModule,\r\n ProductColorParameterFilterModule,\r\n ProductSizeParametersFilterModule\r\n ],\r\n declarations: [\r\n CategoryFilterComponent\r\n ],\r\n exports: [\r\n CategoryFilterComponent\r\n ],\r\n providers: []\r\n})\r\n\r\nexport class CategoryFilterModule {\r\n}\r\n","import {Component, Input, ViewEncapsulation} from '@angular/core';\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {CategoryItemSelector, Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ScrollHelper} from \"../../helpers/scroll.helper\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-category-list-root',\r\n templateUrl: './category-list-root.html',\r\n styleUrls: ['../../assets/styles/2-components/categories.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryListRootComponent extends Translatable {\r\n @Input() title: string;\r\n\r\n categories: Array;\r\n imageSrvUrl: string;\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private http: HttpClient) {\r\n super(dataSvc, seSvc);\r\n\r\n this.imageSrvUrl = this.seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getCategories();\r\n ScrollHelper.scrollUp();\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private getCategories(): void {\r\n this.http.get(`api/category/get-root-categories`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.categories = res;\r\n });\r\n }\r\n\r\n}\r\n","\r\n","/**\r\n * Provides functionality for listing of sub-categories for the given category\r\n */\r\n\r\nimport {Component, Input, ViewEncapsulation} from '@angular/core';\r\nimport {CategoryItemSelector} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\n\r\n@Component({\r\n selector: 'cmp-category-listing',\r\n templateUrl: '../../tpl/category-list.html',\r\n styleUrls: ['../../assets/styles/2-components/subcategories.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryListComponent {\r\n\r\n @Input() categories: CategoryItemSelector[];\r\n catImagePathPrefix: string;\r\n\r\n constructor (private seSvc: SettingsService) {\r\n this.catImagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n}\r\n","\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CategoryListComponent} from \"./category-list.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {CategoryListRootComponent} from \"./category-list-root.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n RouterModule,\r\n CustomPipesModule\r\n ],\r\n declarations: [\r\n CategoryListComponent,\r\n CategoryListRootComponent\r\n ],\r\n exports: [\r\n CategoryListComponent,\r\n CategoryListRootComponent\r\n ]\r\n})\r\n\r\nexport class CategoryListModule {}\r\n","import {Component, Input, Output, ViewEncapsulation, EventEmitter} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {AvailabilitySetting, SettingsService} from \"../../services/settings.service\";\r\nimport {ProductDetailModel, ProductSelector} from \"../product/common\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n templateUrl: '../../tpl/category-best-selling.html',\r\n selector: \"cmp-category-best-selling\",\r\n styleUrls: ['../../assets/styles/2-components/bestseller.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryBestSellingComponent extends Translatable {\r\n\r\n private _categoryId: number;\r\n @Input() set categoryId(value: number) {\r\n if (value !== this._categoryId) {\r\n this._categoryId = value;\r\n this.getData();\r\n }\r\n }\r\n\r\n @Output() dataLoaded = new EventEmitter();\r\n\r\n get categoryId(): number {\r\n return this._categoryId;\r\n }\r\n\r\n productImagePathPrefix: string;\r\n displayModel: ProductDetailModel[];\r\n\r\n currencySymbol: string;\r\n decimalPattern: string = '1.0-0';\r\n\r\n bestSelling: ProductSelector[];\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n showMoreButton: boolean = false;\r\n collapsed: boolean = true;\r\n\r\n availabilitySetting: AvailabilitySetting;\r\n availabilityOnlyNumber: AvailabilitySetting = AvailabilitySetting.onlyNumber;\r\n availabilityOnlyText: AvailabilitySetting = AvailabilitySetting.onlyText;\r\n availabilityBoth: AvailabilitySetting = AvailabilitySetting.both;\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private http: HttpClient, private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n this.availabilitySetting = this.seSvc.availabilitySetting;\r\n this.productImagePathPrefix = seSvc.settings.newImageServerUrl;\r\n this.currencySymbol = this.seSvc.settings.currencies[this.seSvc.currencyId];\r\n this.decimalPattern = `1.${this.seSvc.settings.decimalSettings.ProductBox}-${this.seSvc.settings.decimalSettings.ProductBox}`;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getData() {\r\n this.http.get(`api/category/best-selling/${this._categoryId}`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.displayModel = null;\r\n this.bestSelling = res;\r\n this.fillDisplayedProductModel();\r\n setTimeout(() => {\r\n this.dataLoaded.emit();\r\n }, 0);\r\n });\r\n }\r\n\r\n private fillDisplayedProductModel(): void {\r\n this.showMoreButton = false;\r\n if (!this.bestSelling || !this.bestSelling.length) {\r\n return;\r\n }\r\n\r\n this.displayModel = this.bestSelling.map((bs: ProductSelector) => {\r\n const commonName = bs.variants?.length>0? (bs.variantsCount > 1 ? bs.variants[0].commonName : bs.variants[0].name) : '';\r\n const commonAnnotation: string = bs.variants?.length>0? (bs.variantsCount > 1 ? bs.variants[0].commonAnnotation : bs.variants[0].annotation) : '';\r\n const commonDescription = bs.variants?.length>0? (bs.variantsCount > 1 ? bs.variants[0].commonDescription : bs.variants[0].description) : '';\r\n\r\n let priceRange: Array = null;\r\n if (bs && bs.variantsCount > 1 && bs.minPriceWithVAT != bs.maxPriceWithVAT) {\r\n priceRange = [bs.minPriceWithVAT, bs.maxPriceWithVAT];\r\n }\r\n const one: ProductDetailModel = {\r\n variantId: bs.variants[0].id,\r\n name: commonName,\r\n annotation: commonAnnotation,\r\n description: commonDescription? this.sanitizer.bypassSecurityTrustHtml(commonDescription) : null,\r\n productFlags: bs.commonProductFlags,\r\n code: bs.code,\r\n images: bs.images,\r\n rating: bs.rating,\r\n basePrice: bs.minBasePrice,\r\n priceWithVAT: bs.minPriceWithVAT,\r\n priceWithVatRange: priceRange,\r\n priceWithoutVAT: bs.minPriceWithoutVAT,\r\n variantKey: bs.variantKey,\r\n unit: bs.unit,\r\n minQtyOrder: bs.minMinQtyOrder,\r\n maxQtyOrder: bs.maxQtyOrder,\r\n qtyInStock: bs.sumQtyInStock,\r\n availability: bs.availability,\r\n urlToDisplay: null,\r\n imagePath: bs.imagePath,\r\n imageTitle: bs.commonImageTitle,\r\n isComparable: bs.variantsCount < 2,\r\n variantsCount: bs.variantsCount,\r\n discontinued: bs.discontinued,\r\n categoryName: bs.categoryName,\r\n colors: bs.colors,\r\n sizes: bs.sizes,\r\n factor: bs.factor\r\n };\r\n\r\n\r\n // if(data.variantsCount==1 || data.variantsCount==data.variants.length){\r\n // this.displayModel.urlToDisplay = `/d/${data.variantKey}/${data.commonSeoUrl}/`;\r\n // }\r\n // else{\r\n one.urlToDisplay = `/v/${bs.variants[0].id}/${bs.variants[0].seoUrl}/`;\r\n return one;\r\n });\r\n this.showMoreButton = this.displayModel.length > 3;\r\n }\r\n\r\n getDiscountPercent(product: ProductDetailModel) {\r\n if (!product || !product.basePrice || !product.priceWithVAT || product.basePrice - product.priceWithVAT <= 0) {\r\n return null;\r\n }\r\n\r\n let discount = (product.basePrice - product.priceWithVAT) / product.basePrice * 100;\r\n return Math.round(discount);\r\n }\r\n}\r\n","
\r\n
\r\n {{sen['category-best-selling-products']}}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n {{i+1}}.\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
0\">\r\n {{getDiscountPercent(product)}}%\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n {{product.name}}\r\n \r\n\r\n
\r\n {{sen['product-code']}} {{product.code}}\r\n
\r\n\r\n
\r\n {{product.annotation}}\r\n
\r\n\r\n \r\n
0; else elseAvail\"\r\n [innerHTML]=\"(product?.qtyInStock | number: '1.0-0') + ' ' + product?.unit.shortCut + ' ' + sen['product-in-stock']\">\r\n
\r\n \r\n
\r\n {{sen['product-not-in-stock']}}\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n {{product?.availability?.name}}\r\n
\r\n
\r\n\r\n \r\n
0; else elseAvail\" class=\"bestseller__availability product__availability--green\"\r\n [innerHTML]=\"(product?.qtyInStock | number: '1.0-0') + ' ' + product?.unit.shortCut + ' ' + product?.availability?.name\">\r\n
\r\n\r\n \r\n
\r\n {{sen['product-not-in-stock']}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{(product?.priceWithVAT) | currency:currencySymbol:'symbol-narrow':decimalPattern}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n 3\">\r\n \r\n
2\">\r\n
\r\n {{i+1}}.\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
0\">\r\n {{getDiscountPercent(product)}}%\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n {{product.name}}\r\n \r\n\r\n
\r\n {{sen['product-code']}} {{product.code}}\r\n
\r\n\r\n
\r\n {{product.annotation}}\r\n
\r\n\r\n \r\n
0; else elseAvail\"\r\n [innerHTML]=\"(product?.qtyInStock | number: '1.0-0') + ' ' + product?.unit.shortCut + ' ' + sen['product-in-stock']\">\r\n
\r\n\r\n \r\n
\r\n {{sen['product-not-in-stock']}}\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n {{product?.availability?.name}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{(product?.priceWithVAT) | currency:currencySymbol:'symbol-narrow':decimalPattern}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{sen[\"detail-show-more\"]}}\r\n
\r\n\r\n
\r\n {{sen[\"filter-show-less\"]}}\r\n
\r\n
\r\n","import {Component, EventEmitter, HostListener, Input, Output, Renderer2, ViewEncapsulation} from \"@angular/core\";\r\nimport {CategoryItemSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Subject} from \"rxjs\";\r\nimport {MenuService} from \"../../services/menu.service\";\r\nimport {MenuBehavior} from \"../menu/common\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-category-menu',\r\n templateUrl: '../../tpl/category-menu.html',\r\n styleUrls: ['../../assets/styles/2-components/category-menu.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryMenuComponent extends Translatable {\r\n\r\n @Input() menuBehavior: MenuBehavior = MenuBehavior.default;\r\n @Input() menuActive: boolean = false;\r\n @Output() onNoDataLoaded: EventEmitter = new EventEmitter();\r\n @Output() itemClicked: EventEmitter = new EventEmitter();\r\n\r\n categories: Array;\r\n private dataLoaded: boolean = false;\r\n\r\n menuImagePathPrefix: string;\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n private _js_menu_element: any;\r\n private get js_menu_element(): any {\r\n if (!this._js_menu_element) {\r\n //this._js_menu_element = this.elementRef.nativeElement.querySelector('.js-menu');\r\n this._js_menu_element = document.body.querySelector('.js-menu');\r\n }\r\n\r\n return this._js_menu_element;\r\n }\r\n\r\n private _menu_element: any;\r\n private get menu_element(): any {\r\n if (!this._menu_element) {\r\n //this._menu_element = this.elementRef.nativeElement.querySelector('.menu');\r\n this._menu_element = document.body.querySelector('.menu');\r\n }\r\n\r\n return this._menu_element;\r\n }\r\n\r\n private _responsive_menu_element: any;\r\n private get responsive_menu_element(): any {\r\n if (!this._responsive_menu_element) {\r\n //this._responsive_menu_element = this.elementRef.nativeElement.querySelector('.responsive-menu');\r\n this._responsive_menu_element = document.body.querySelector('.responsive-menu');\r\n }\r\n\r\n return this._responsive_menu_element;\r\n }\r\n\r\n\r\n private _navigation_element: any;\r\n private get navigation_element(): any {\r\n if (!this._navigation_element) {\r\n //this._navigation_element = this.elementRef.nativeElement.querySelector('.navigation');\r\n this._navigation_element = document.body.querySelector('.navigation');\r\n }\r\n\r\n return this._navigation_element;\r\n }\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private renderer: Renderer2, private menuSvc: MenuService,\r\n private http: HttpClient) {\r\n super(dataSvc, seSvc);\r\n this.menuImagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n\r\n this.menuSvc.toggleMenu\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.toggleMenu();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getCategories();\r\n }\r\n\r\n private getCategories(): void {\r\n if(this.dataLoaded) return;\r\n\r\n this.http.get(`api/category/get-root-categories`)\r\n .subscribe((res) => {\r\n this.categories = res;\r\n this.dataLoaded = true;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n toggleMenu(hide?: boolean): void {\r\n if (hide === undefined) hide = this.menuActive;\r\n\r\n if (!hide) {\r\n if (this.menu_element) {\r\n this.renderer.addClass(this.menu_element, \"menu--active\");\r\n }\r\n if (this.responsive_menu_element) {\r\n this.dataSvc.menuRespShow(true);\r\n }\r\n if (this.navigation_element) {\r\n this.renderer.addClass(this.navigation_element, \"navigation--active\");\r\n }\r\n this.menuActive = true;\r\n } else {\r\n if (this.menu_element) {\r\n this.renderer.removeClass(this.menu_element, \"menu--active\");\r\n }\r\n if (this.responsive_menu_element) {\r\n this.dataSvc.menuRespShow(false);\r\n }\r\n if (this.navigation_element) {\r\n this.renderer.removeClass(this.navigation_element, \"navigation--active\");\r\n }\r\n\r\n this.menuActive = false;\r\n }\r\n }\r\n\r\n closeSubMenu(): void {\r\n let menuEl: HTMLElement = document.querySelector('cmp-category-menu')\r\n var li = menuEl.closest('li.menu__item');\r\n if (li) {\r\n $(li).removeClass(\"menu__item--active\");\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n handleClick() {\r\n if (this.menuBehavior == MenuBehavior.openAndFixedOnIndex && this.dataSvc.pageType == 'index') {\r\n return;\r\n }\r\n if (this.js_menu_element) {\r\n this.renderer.removeClass(this.js_menu_element, 'menu--active');\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(/*event: KeyboardEvent*/) {\r\n\r\n if (this.menuBehavior == MenuBehavior.openAndFixedOnIndex && this.dataSvc.pageType == 'index') {\r\n return;\r\n }\r\n if (this.js_menu_element) {\r\n this.renderer.removeClass(this.js_menu_element, 'menu--active');\r\n }\r\n }\r\n\r\n toggleActive(event: any) {\r\n event.stopPropagation();\r\n\r\n if (this.js_menu_element) {\r\n if (this.js_menu_element.classList.contains('menu--active')) {\r\n this.renderer.removeClass(this.js_menu_element, 'menu--active');\r\n } else {\r\n this.renderer.addClass(this.js_menu_element, 'menu--active');\r\n }\r\n }\r\n\r\n }\r\n}\r\n"," 0\">\r\n \r\n\r\n","import {AfterViewInit, Component, ViewEncapsulation} from '@angular/core';\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {MenuService} from \"../../services/menu.service\";\r\n\r\n\r\n@Component({\r\n templateUrl: './category-root.html',\r\n styleUrls: ['../../assets/styles/4-routes/category-root.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryRootComponent extends Translatable implements AfterViewInit {\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private menuSvc: MenuService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.dataSvc.appInitialized) {\r\n this.dataSvc.appInitialized = true;\r\n } else {\r\n this.menuSvc.toggleMenu.emit();\r\n this.dataSvc.menuRespShow(false);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.dataSvc.setBc([{displayName: this.sen['app-products'], targetSeoTail: ''}])\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n}\r\n","
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n","import {AfterViewInit, Component, EventEmitter, Renderer2, ViewChild, ViewEncapsulation} from '@angular/core';\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {BreadCrumbInfo, CategoryItemSelector, ProductRequestType, Translatable} from \"../../interfaces/general\";\r\nimport {ActivatedRoute, NavigationEnd, Params, Router} from \"@angular/router\";\r\nimport {ProductRequest} from \"./interfaces\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {filter, map, switchMap, take, takeUntil} from \"rxjs/operators\";\r\nimport {of, Subject, zip} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\nimport {stripHtml} from \"../../helpers/string.helper\";\r\nimport {PageStateService, ScrollReason} from \"../../services/page-state.service\";\r\nimport {ScrollHelper} from \"../../helpers/scroll.helper\";\r\nimport {CookiesConsentService} from \"../cookies-consent/cookies-consent.service\";\r\nimport {ISelectBoxItemModel} from \"../select-box/interfaces/ISelectBoxItemModel\";\r\nimport {FormBuilder, FormGroup} from \"@angular/forms\";\r\nimport {LandingPageService} from \"../../services/landing-page.service\";\r\nimport {ProductSelector} from \"../product/common\";\r\nimport {PageChangedInfo} from \"../pagination/common\";\r\nimport {CategoryFilterComponent} from \"../category-filter/category-filter.component\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n templateUrl: '../../tpl/category.html',\r\n styleUrls: ['../../assets/styles/4-routes/category.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CategoryComponent extends Translatable implements AfterViewInit {\r\n\r\n set category(value: CategoryItemSelector) {\r\n this.catSvc.category = value;\r\n }\r\n\r\n get category(): CategoryItemSelector {\r\n return this.catSvc.category;\r\n }\r\n\r\n productRequest: ProductRequest;\r\n products: ProductSelector[];\r\n productCount: number;\r\n resultType: ProductRequestType = ProductRequestType.ByData;\r\n\r\n isAppend: boolean = false;\r\n catImagePathPrefix: string;\r\n imagePathPrefix: string;\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n private afterViewInitEmitter: EventEmitter = new EventEmitter();\r\n private afterUrlChangeEmitter: EventEmitter = new EventEmitter();\r\n filterChangedEmitter: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(CategoryFilterComponent) categoryFilter: CategoryFilterComponent;\r\n\r\n timer: any;\r\n showBannerStripe: boolean;\r\n filterActive: boolean = false;\r\n pageSizeOpts: ISelectBoxItemModel[];\r\n psForm: FormGroup;\r\n index = 0;\r\n\r\n initiated: boolean = false;\r\n queryParams: Params;\r\n queryParamsNoPage: Params;\r\n\r\n private lastHandledLandigPageId: number = null;\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService, private route: ActivatedRoute,\r\n private http: HttpClient, private rend: Renderer2,\r\n private router: Router, public catSvc: CategoryService, private sanitizer: DomSanitizer,\r\n private pageStateSvc: PageStateService, private ccSvc: CookiesConsentService,\r\n private fb: FormBuilder, private landingPagesSvc: LandingPageService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.landingPagesSvc.isLandingPage\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.setBreadCrumbs();\r\n this.setPageHead();\r\n })\r\n\r\n this.pageSizeOpts = this.catSvc.pageSizes.map(p => {\r\n return {\r\n value: p.value,\r\n data: p.value,\r\n isDisabled: false\r\n }\r\n });\r\n\r\n this.createForm();\r\n\r\n this.imagePathPrefix = seSvc.settings.newImageServerUrl\r\n this.catImagePathPrefix = this.imagePathPrefix + '/catalog/50/50/';\r\n\r\n this.catSvc.productDataChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n if (this.catSvc.products) {\r\n this.resultType = this.catSvc.products.resultType;\r\n this.products = this.isAppend ? [...this.products, ...this.catSvc.products.products] : this.catSvc.products.products;\r\n this.productCount = this.catSvc.products.totalCount;\r\n this.dataSvc.setPrevNextToHeader(window.location.href, 'pi', this.catSvc.pageIndex, Math.ceil(this.productCount / this.catSvc.pageSize));\r\n } else {\r\n this.resultType = ProductRequestType.ByData;\r\n this.products = null;\r\n this.productCount = null;\r\n }\r\n\r\n if (!this.isAppend) {\r\n this.scrollUp();\r\n } else {\r\n this.isAppend = false;\r\n }\r\n });\r\n\r\n zip(this.afterViewInitEmitter, this.afterUrlChangeEmitter, this.filterChangedEmitter)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.initiated = true;\r\n this.filterChangedEmitter\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.catSvc.getCategoryDetailData();\r\n });\r\n this.onUrlChange();\r\n });\r\n\r\n this.afterUrlChangeEmitter.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.onUrlChange();\r\n });\r\n }\r\n\r\n private createForm(): void {\r\n const val = this.seSvc.settings.pageSizes[this.catSvc.pageSizeIndex].value;\r\n this.psForm = this.fb.group({\r\n pgSize: [val]\r\n })\r\n }\r\n\r\n private onUrlChange(): void {\r\n this.http.get(`api/category/${this.catSvc.categoryId}`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n if (!res) {\r\n this.router.navigateByUrl(`/error/404`).then(() => {\r\n });\r\n } else {\r\n ScrollHelper.scrollUp();\r\n this.setCategoryData(res);\r\n }\r\n });\r\n //\r\n\r\n this.catSvc.loadDataFromQueryString();\r\n this.catSvc.getCategoryDetailData(!this.initiated);\r\n }\r\n\r\n setCategoryData(res: CategoryItemSelector): void {\r\n if (!res) {\r\n return;\r\n }\r\n this.category = res;\r\n\r\n this.category.description = this.sanitizer.bypassSecurityTrustHtml(this.category.description);\r\n this.setBreadCrumbs();\r\n this.setPageHead();\r\n // this.dataSvc.setPrevNextToHeader(window.location.href,'pi', this.catSvc.pageIndex, Math.ceil(this.productCount / this.catSvc.pageSize));\r\n\r\n this.appendSeznamReatargeting();\r\n }\r\n\r\n private setPageHead(): void {\r\n\r\n let catDesc: string = null;\r\n let catImage: string = null;\r\n if (this.landingPagesSvc.isLandingPage.value && this.landingPagesSvc.actualLandingPageData) {\r\n catDesc = stripHtml(this.landingPagesSvc.actualLandingPageData.seoDescription);\r\n catImage = stripHtml(this.landingPagesSvc.actualLandingPageData.imagePath);\r\n }\r\n\r\n if (!catDesc) {\r\n //const safeHtml: any = this.category?.description;\r\n //let safeHtmlToString: string = null;\r\n // if (safeHtml) {\r\n // safeHtmlToString = safeHtml['changingThisBreaksApplicationSecurity'];\r\n // }\r\n //const safeDesc = stripHtml(safeHtmlToString);\r\n catDesc = this.category?.catSeoInfo?.seoDescription || '';\r\n }\r\n\r\n if (!catImage) {\r\n catImage = this.category?.imagePath ? `${this.catImagePathPrefix}${this.category?.imagePath}` : null;\r\n }\r\n\r\n if (this.catSvc.paramFilter.exactValueParameters.length > 0 || this.catSvc.pageIndex == 1)\r\n this.dataSvc.setPageHead(catDesc, `${this.dataSvc.domain}/c/${this.catSvc.categoryId}/${this.category?.catSeoInfo.seoUrl}`, catImage);\r\n else\r\n this.dataSvc.setPageHead(catDesc, `${this.dataSvc.domain}/c/${this.catSvc.categoryId}/${this.category?.catSeoInfo.seoUrl}?pi=${this.catSvc.pageIndex}`, catImage);\r\n }\r\n\r\n private setBreadCrumbs() {\r\n let seoTitle: string = null;\r\n if (this.landingPagesSvc.isLandingPage.value &&\r\n this.landingPagesSvc?.actualLandingPageData?.seoTitle) {\r\n seoTitle = this.landingPagesSvc?.actualLandingPageData?.seoTitle;\r\n } else {\r\n seoTitle = this.category?.catSeoInfo?.seoTitle;\r\n }\r\n\r\n const bcInfo = this.category?.bcInfo?.sort(CategoryComponent.bcComparer);\r\n const explicitTitle = seoTitle;\r\n const title = explicitTitle ? `${explicitTitle} - ${this.seSvc.settings.shopSeo.ShopTitle}` : null;\r\n\r\n let bc = [\r\n {displayName: this.sen['app-products'], targetSeoTail: 'products'},\r\n ...(bcInfo ?? [])\r\n ];\r\n this.dataSvc.setBc(bc, title);\r\n }\r\n\r\n private scrollUp(): void {\r\n\r\n if (!this.pageStateSvc.isBrowserBackButton) {\r\n this.pageStateSvc.pageTopOffset = null;\r\n if (this.pageStateSvc.scrollReason == ScrollReason.Pager) {\r\n ScrollHelper.scrollToAnchor('.js-scroll-target');\r\n }\r\n return;\r\n }\r\n\r\n if (this.pageStateSvc.pageTopOffset) {\r\n setTimeout(() => {\r\n ScrollHelper.scrollToOffset(this.pageStateSvc.pageTopOffset);\r\n this.pageStateSvc.pageTopOffset = null;\r\n }, 0);\r\n }\r\n }\r\n\r\n /*orderByChanged(index: number) {\r\n this.catSvc.orderByIndex = index;\r\n this.catSvc.selectedOrderBy = this.catSvc.orderByOptions[this.catSvc.orderByIndex];\r\n this.catSvc.getOnlyProductsData();\r\n }*/\r\n\r\n addPage(event: PageChangedInfo): void {\r\n if (event.page != this.catSvc.pageIndex) {\r\n this.pageStateSvc.scrollReason = ScrollReason.Pager;\r\n this.catSvc.pageIndex = event.page;\r\n // this.catSvc.pageSize = event.itemsPerPage;\r\n this.isAppend = true;\r\n\r\n this.catSvc.getOnlyProductsData();\r\n }\r\n }\r\n\r\n pageChanged(event: PageChangedInfo): void {\r\n if (event.page != this.catSvc.pageIndex) {\r\n this.pageStateSvc.scrollReason = ScrollReason.Pager;\r\n this.catSvc.pageIndex = event.page;\r\n // this.catSvc.pageSize = event.itemsPerPage;\r\n\r\n this.catSvc.getOnlyProductsData();\r\n this.dataSvc.setPrevNextToHeader(window.location.href, 'pi', this.catSvc.pageIndex, Math.ceil(this.productCount / this.catSvc.pageSize));\r\n }\r\n }\r\n\r\n\r\n toggleFilter(): void {\r\n if (!this.filterActive) {\r\n $(\"html\").addClass(\"locked\");\r\n $(\"body\").addClass(\"filter-active\");\r\n $('.filter').addClass(\"filter--active\");\r\n this.filterActive = true;\r\n } else {\r\n $(\"html\").removeClass(\"locked\");\r\n $(\"body\").removeClass(\"filter-active\");\r\n $('.filter').removeClass(\"filter--active\");\r\n this.filterActive = false;\r\n }\r\n }\r\n\r\n producersChanged(): void {\r\n this.catSvc.pageIndex = 1;\r\n this.catSvc.getCategoryDetailData();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.onUrlChange();\r\n this.afterViewInitEmitter.emit();\r\n }\r\n\r\n private lastNavigationEndUrl: string = null;\r\n\r\n ngOnInit(): void {\r\n //jen pro pripad, ze v jiz oparametrizovane kategorii nekdo klikne\r\n //v menu na tu samou kategorii, tak at se uskutecni prenacteni\r\n //do cisteho nefiltrovaneho stavu\r\n //vyhoda je, ze k udalosti dochazi pouze v pripade\r\n //ze routa zustava stejna, tedy jen se meni query string.\r\n //pokud se meni kategorie, tedy jdeme z /c/6888/elektronika?pr=859 na /c/6892/potraviny k udalosti nedochazi\r\n\r\n //pridavam vyhodnocovani pritomnosti lanpag parametru v QS\r\n //muze se totiz stat, ze nekdo klikne na landing page v cmp-available-landing-pages\r\n //potom system musi zareagovat na zmenu parametru v QS\r\n //udelam to tak, ze pokud je pritomny lanpag, ulozim si jeho hodnotu, at na stejny lanpag nereaguju pri zmene jineho qs parametru\r\n //pokud neni pritomny lanpag, ulozim si null\r\n this.router.events.pipe(\r\n takeUntil(this.ngUnsubscribe),//very important here, at to fakt bere udalosti, jen kdyz je category componenta ziva\r\n filter(evt => evt instanceof NavigationEnd)).subscribe((e) => {\r\n\r\n const url = (e).url;\r\n\r\n if (url.indexOf('?') == -1 && this.lastNavigationEndUrl != url) {\r\n this.afterUrlChangeEmitter.emit();\r\n this.lastHandledLandigPageId = null;\r\n } else if (this.landingPagesSvc.isLandingPage.value) {\r\n if (this.landingPagesSvc.actualLandingPageData?.id != this.lastHandledLandigPageId) {\r\n this.lastHandledLandigPageId = this.landingPagesSvc.actualLandingPageData.id;\r\n this.afterUrlChangeEmitter.emit();\r\n }\r\n } else {\r\n this.lastHandledLandigPageId = null;\r\n }\r\n this.lastNavigationEndUrl = url;\r\n });\r\n //\r\n\r\n //toto tady bylo: reseni zachytavani zmeny url\r\n //nam vyhovuje, ze nereaguje na vsechny zmeny queryStringu\r\n this.route.url\r\n .pipe(\r\n map(url => url[0].path),\r\n switchMap(id => of(this.catSvc.urlChangeOccured(id))),\r\n takeUntil(this.ngUnsubscribe)\r\n )\r\n .subscribe(() => {\r\n if (this.pageStateSvc.isBrowserBackButton) {\r\n this.setBreadCrumbs();\r\n }\r\n\r\n this.lastHandledLandigPageId = null;\r\n this.afterUrlChangeEmitter.emit();\r\n });\r\n\r\n this.route.queryParams\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((params) => {\r\n this.queryParams = params;\r\n this.queryParamsNoPage = this.dataSvc.handleUrlParams(params, ['pi'])\r\n });\r\n //\r\n this.catSvc.getCategoryDetailData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n this.pageStateSvc.pageTopOffset = window.pageYOffset;\r\n }\r\n\r\n private appendSeznamReatargeting(): void {\r\n let bodyEl = document.querySelector('body');\r\n\r\n const scriptElASelector = 'sclick-retargeting-a';\r\n const scriptElBSelector = 'sclick-retargeting-b';\r\n\r\n let scriptElA: HTMLScriptElement = document.querySelector(`script[id=\"${scriptElASelector}\"]`);\r\n if (scriptElA) {\r\n this.rend.removeChild(bodyEl, scriptElA);\r\n }\r\n\r\n let scriptElB: HTMLScriptElement = document.querySelector(`script[id=\"${scriptElBSelector}\"]`);\r\n if (scriptElB) {\r\n this.rend.removeChild(bodyEl, scriptElB);\r\n }\r\n\r\n if (this.ccSvc.isSklikRetarget() && this.category.zboziCategoryText) {\r\n\r\n const adsConsent = this.ccSvc.isAdsConsent() ? 1 : 0;\r\n\r\n scriptElB = this.rend.createElement('script');\r\n scriptElB.src = 'https://c.seznam.cz/js/rc.js';\r\n scriptElB.type = 'text/javascript';\r\n scriptElB.id = scriptElBSelector;\r\n\r\n this.rend.appendChild(bodyEl, scriptElB);\r\n\r\n\r\n scriptElA = this.rend.createElement('script');\r\n scriptElA.type = 'text/javascript';\r\n scriptElA.innerHTML =\r\n `\r\n var retargetingConf = {\r\n rtgId: ${this.seSvc.seznamSettings.sklikRetargetingId}, /* identifikátor retargeting */\r\n //itemId: \"67890\", /* identifikátor nabídky */\r\n category: \"${this.category.zboziCategoryText}\", /* kategorie eshopu */\r\n pageType: \"category\", /* typ stránky - offerdetail, category */\r\n //rtgUrl: \"https://example.com?hello=world\", /* URL doplněná o volitelné parametry */\r\n consent: ${adsConsent}, /* souhlas od návštěvníka na odeslání retargetingového hitu, povolené hodnoty: 0 (není souhlas) nebo 1 (je souhlas) */\r\n };\r\n // Ujistěte se, že metoda existuje, předtím než ji zavoláte\r\n if (window.rc && window.rc.retargetingHit) {\r\n window.rc.retargetingHit(retargetingConf);\r\n }\r\n `;\r\n scriptElA.id = scriptElASelector;\r\n\r\n this.rend.appendChild(bodyEl, scriptElA);\r\n }\r\n }\r\n\r\n private static bcComparer(a: BreadCrumbInfo, b: BreadCrumbInfo): number {\r\n return a.categoryIdPath.length - b.categoryIdPath.length;\r\n }\r\n\r\n onFilterStateChanged(isFilterOpen: boolean): void {\r\n if (isFilterOpen !== this.filterActive) {\r\n this.filterActive = isFilterOpen;\r\n }\r\n }\r\n\r\n filterChanged() {\r\n if (this.catSvc.pageIndex != 1) this.catSvc.pageIndex = 1;\r\n this.filterChangedEmitter.emit();\r\n }\r\n\r\n get title(): string {\r\n if (this.landingPagesSvc.isLandingPage.value\r\n && this.landingPagesSvc?.actualLandingPageData?.title\r\n ) {\r\n return this.landingPagesSvc?.actualLandingPageData?.title;\r\n }\r\n return this.category?.displayName;\r\n }\r\n\r\n get description(): SafeHtml {\r\n if (this.landingPagesSvc.isLandingPage.value && this.landingPagesSvc?.actualLandingPageData?.description) {\r\n return this.sanitizer.bypassSecurityTrustHtml(this.landingPagesSvc?.actualLandingPageData?.description);\r\n }\r\n return this.category?.description;\r\n }\r\n\r\n}\r\n","
\r\n \r\n\r\n
\r\n
\r\n \r\n\r\n
\r\n {{sen['show-filter']}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
","/**\r\n * @description\r\n * Provides functionality for Product Catalogue\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ButtonsModule} from \"ngx-bootstrap/buttons\";\r\nimport {CategoryComponent} from \"./category.component\";\r\nimport {ProducerFilterModule} from \"../producer-filter/producer-filter.module\";\r\nimport {SharedProductSettings} from \"../../shared-settings/shared-settings\";\r\nimport {ProductBoxModule} from \"../product-box/product-box.module\";\r\n\r\nimport {PriceFilterModule} from \"../price-filter/price-filter.module\";\r\nimport {CategoryListModule} from \"../category-list/category-list.module\";\r\nimport {ProductListModule} from \"../product-list/product-list.module\";\r\nimport {BannerStripeModule} from \"../banner-stripe/banner-stripe.module\";\r\nimport {CategoryBestSellingComponent} from \"./category-best-selling.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ProductFlagsFilterModule} from \"../product-flags-filter/product-flags-filter.module\";\r\nimport {CategoryFilterModule} from \"../category-filter/category-filter.module\";\r\nimport {SelectBoxModule} from \"../select-box/select-box.module\";\r\nimport {AlertModule} from \"../alert/alert.module\";\r\nimport {AvailableLandingPagesModule} from \"../landing-pages/available-landing-pages.module\";\r\nimport {CategoryMenuComponent} from \"./category-menu.component\";\r\nimport {CategoryRootComponent} from \"./category-root.component\";\r\nimport {InspirationModule} from \"../inspiration-box/inspiration-box.module\";\r\nimport {ExperienceModule} from \"../experience/experience.module\";\r\nimport {FlexPaginationModule} from \"../pagination/pagination.module\";\r\nimport {\r\n ProductParametersFilterActiveModule\r\n} from \"../product-parameters-filter-active/product-parameters-filter-active.module\";\r\nimport {BreadcrumbsModule} from \"../breadcrumbs/breadcrumbs.module\";\r\nimport {PageHeroModule} from \"../page-hero/page-hero.module\";\r\nimport {PaginatorModule} from \"../paginator/paginator.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CategoryListModule,\r\n CommonModule,\r\n FormsModule,\r\n ImageCacheBustModule,\r\n ProductBoxModule,\r\n RouterModule.forChild([\r\n {path: '', component: CategoryRootComponent},\r\n {path: ':id/:seo', component: CategoryComponent}\r\n ]),\r\n BannerStripeModule,\r\n ButtonsModule.forRoot(),\r\n PriceFilterModule,\r\n ProducerFilterModule,\r\n ProductFlagsFilterModule,\r\n ProductListModule,\r\n CustomPipesModule,\r\n CategoryFilterModule,\r\n SelectBoxModule,\r\n ReactiveFormsModule,\r\n AlertModule,\r\n AvailableLandingPagesModule,\r\n InspirationModule,\r\n ExperienceModule,\r\n FlexPaginationModule,\r\n ProductParametersFilterActiveModule,\r\n BreadcrumbsModule,\r\n PageHeroModule,\r\n PaginatorModule\r\n ],\r\n declarations: [\r\n CategoryComponent,\r\n CategoryBestSellingComponent,\r\n CategoryMenuComponent,\r\n CategoryRootComponent\r\n ],\r\n exports: [\r\n CategoryComponent,\r\n CategoryBestSellingComponent,\r\n CategoryMenuComponent,\r\n CategoryRootComponent\r\n ],\r\n providers: [\r\n\r\n SharedProductSettings\r\n ]\r\n})\r\n\r\nexport class CategoryModule {\r\n}\r\n","import {ParametricFilterRequest, ProductRequestType} from \"../../interfaces/general\";\r\nimport {ProductSelector} from \"../product/common\";\r\nimport {ParameterMasterSelector, ParameterSelector} from \"../product-parameter-filter/common\";\r\n\r\nexport interface ProductRequest {\r\n categoryId: number;\r\n cultureId: number;\r\n pageIndex: number;\r\n pageSize: number;\r\n priceRange: number[];\r\n orderByKeys: string[];\r\n producers: number[];\r\n productFlagsIds: number[];\r\n showAvailableOnly: boolean;\r\n parametricFilter?: ParametricFilterRequest;\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface OrderByOptions {\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport class CategoryConfigInitializer {\r\n categoryId?: number;\r\n cultureId?: number;\r\n pageSizeIndex?: number;\r\n pageIndex?: number;\r\n selectedProducers?: number[];\r\n selectedFlags: number[];\r\n selectedPriceRange: number[];\r\n selectedOrderBy: OrderByOptions;\r\n orderByIndex: number;\r\n filterIsActive: boolean;\r\n showAvailableOnly: boolean;\r\n paramsHash: string;\r\n pageSizes: any[];\r\n maxResultCount?: number;\r\n}\r\n\r\nexport class CategoryConfig extends CategoryConfigInitializer {\r\n\r\n constructor(init: CategoryConfigInitializer) {\r\n super();\r\n this.categoryId = init.categoryId;\r\n this.cultureId = init.cultureId;\r\n this.pageSizeIndex = init.pageSizeIndex;\r\n this.pageIndex = init.pageIndex;\r\n this.selectedProducers = init.selectedProducers;\r\n this.selectedFlags = init.selectedFlags;\r\n this.selectedPriceRange = init.selectedPriceRange;\r\n this.selectedOrderBy = init.selectedOrderBy;\r\n this.orderByIndex = init.orderByIndex;\r\n this.filterIsActive = init.filterIsActive;\r\n this.showAvailableOnly = init.showAvailableOnly;\r\n this.paramsHash = init.paramsHash;\r\n this.pageSizes = init.pageSizes;\r\n this.maxResultCount = init.maxResultCount;\r\n }\r\n\r\n public get pageSize(): number {\r\n\r\n if (!this.pageSizes || this.pageSizeIndex == null || this.pageSizeIndex < 0) {\r\n return null;\r\n }\r\n return this.pageSizes[this.pageSizeIndex].value;\r\n }\r\n\r\n public set pageSize(value: number) {\r\n if (!this.pageSizes || !value) {\r\n return;\r\n }\r\n\r\n let pageSize = this.pageSizes.find(ps => ps.value == value);\r\n if (pageSize) {\r\n this.pageSizeIndex = this.pageSizes.indexOf(pageSize);\r\n }\r\n }\r\n}\r\n\r\nexport interface SeoInfoSelector {\r\n seoTitle: string;\r\n seoDescription: string;\r\n seoUrl: string;\r\n}\r\n\r\nexport interface ProductResponseModel {\r\n products: ProductSelector[];\r\n totalCount: number;\r\n minPrice: number;\r\n maxPrice: number;\r\n resultType: ProductRequestType;\r\n}\r\n\r\n\r\nexport interface CategoryDetailDataSelector {\r\n products: ProductResponseModel;\r\n parameters: Array;\r\n masterParameters: Array;\r\n //producers: Array;\r\n availableOnlyCount: number;\r\n prices: Array;\r\n priceMin: number;\r\n priceMax: number;\r\n //productFlags: Array;\r\n\r\n\r\n // just for debugging and informative purposes\r\n passesCount?: number\r\n}\r\n\r\n\r\nexport interface ProductFlagSelector {\r\n id: number;\r\n name: string;\r\n order: number;\r\n url: string;\r\n productsCount: number;\r\n backgroundColor: string;\r\n textColor: string;\r\n}\r\n\r\nexport interface ProductPartRequest {\r\n categoryId: number;\r\n pageSize: number;\r\n}","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {getCookie, setCookie} from \"../../helpers/cookie.helper\";\r\n\r\n@Component({\r\n selector: 'cmp-cookie-warning',\r\n templateUrl: '../../tpl/cookie-warning.html',\r\n styleUrls: ['../../assets/styles/2-components/cookie-consent.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CookieWarningComponent extends Translatable {\r\n\r\n @Input() DelayToShow: number = 3000;\r\n @Input() ExpireInHours: number = 0;\r\n\r\n showWarning: boolean = false;\r\n delayHandler: any = null;\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n let wc: string = getCookie('warcoo');\r\n if (wc != '1') {\r\n if (this.delayHandler) clearTimeout(this.delayHandler);\r\n this.delayHandler = setTimeout(() => {\r\n this.showWarning = true;\r\n }, Math.max(0, this.DelayToShow));\r\n }\r\n }\r\n\r\n cookieAccept(): void {\r\n if (this.ExpireInHours > 0) {\r\n setCookie('warcoo', '1', this.ExpireInHours);\r\n } else {\r\n setCookie('warcoo', '1');\r\n }\r\n this.showWarning = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.delayHandler) clearTimeout(this.delayHandler);\r\n }\r\n\r\n}","
\r\n
{{sen['cookie-warning-text']}}\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n Tato webová stránka používá cookies\r\n
\r\n\r\n
\r\n Jsme společnosti ze SKUPINY ČEZ. Na těchto stránkách fungují cookies, které naše společnosti využívají. Jednotlivé typy cookies a jejich dobu zpracování naleznete popsané níže v tabulce. Zvolte prosím Vámi preferovanou variantu. Pokud byste nás potřebovali ohledně výkonu vašich práv v souvislosti se zpracováním cookies kontaktovat, obraťte se prosím na společnost, jejíž stránky procházíte, nebo na našeho Pověřence pro ochranu osobních údajů na webové adrese gdpr.cez.cz. Pokud si myslíte, že s osobními údaji nenakládáme, jak bychom měli, máte možnost podat stížnost u Úřadu pro ochranu osobních údajů. Budeme však rádi, pokud se nejdříve obrátíte přímo na nás a budeme tak moct Váš požadavek obratem vyřešit.\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n Prohlášení o cookies\r\n
\r\n\r\n
\r\n O aplikaci\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Nutné (14)\r\n
\r\n\r\n
\r\n Preferenční (5)\r\n
\r\n\r\n
\r\n Statistické\r\n
\r\n\r\n
\r\n Marketingové\r\n
\r\n\r\n
\r\n Neklasifikované (6)\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n Nutné cookies pomáhají, aby byla webová stránka použitelná tak, že umožní základní funkce jako navigace stránky a přístup k zabezpečeným sekcím webové stránky. Webová stránka nemůže správně fungovat bez těchto cookies.\r\n

\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
JménoPoskytovatelÚčelVypršeníTyp
BIGipServer#Skupina CezPoužívá se pro šíření provozu webové stránky na několik serverů, aby se optimalizovaly doby odezvy.SessionHTTP
BIGipServer#Skupina CezPoužívá se pro šíření provozu webové stránky na několik serverů, aby se optimalizovaly doby odezvy.SessionHTTP
BIGipServer#Skupina CezPoužívá se pro šíření provozu webové stránky na několik serverů, aby se optimalizovaly doby odezvy.SessionHTTP
BIGipServer#Skupina CezPoužívá se pro šíření provozu webové stránky na několik serverů, aby se optimalizovaly doby odezvy.SessionHTTP
BIGipServer#Skupina CezPoužívá se pro šíření provozu webové stránky na několik serverů, aby se optimalizovaly doby odezvy.SessionHTTP
\r\n
\r\n\r\n
\r\n Preferenční content\r\n
\r\n\r\n
\r\n Statistické content\r\n
\r\n\r\n
\r\n Marketingové content\r\n
\r\n\r\n
\r\n Neklasifikované content\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Cookies jsou malé textové soubory, které mohou být používány webovými stránkami, aby učinily uživatelský zážitek více efektivní.

\r\n\r\n Aby se mohly webové stránky správně zobrazovat, potřebujeme sbírat tzv. technické cookies. Pro všechny ostatní typy cookies potřebujeme váš souhlas.

\r\n\r\n Tato stránka používá různé typy cookies. Některé cookies jsou umístěny službami třetích stran, které se objevují na našich stránkách.

\r\n\r\n Kdykoliv můžete změnit nebo zrušit svůj souhlas prostřednictvím Vyjádření o souborech cookie na našich webových stránkách.

\r\n\r\n Zjistěte v našich zásadách ochrany osobních údajů více o tom, kdo jsme, jak nás můžete kontaktovat a jak zpracováváme vaše osobní údaje.

\r\n\r\n Uvedte prosím ID svého souhlasu a datum, kdy nás budete kontaktovat ohledne vašeho souhlasu.\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n Prohlášení o cookies bylo naposledy aktualizováno 08.10.21 Cookiebot\r\n
\r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CookieWarningComponent} from \"./cookie-warning.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [CommonModule,ImageCacheBustModule],\r\n declarations: [CookieWarningComponent],\r\n exports: [CookieWarningComponent]\r\n})\r\n\r\nexport class CookieWarningModule {\r\n}","import {ReplaySubject} from \"rxjs\";\r\n\r\nexport enum CookiesConsentStatus {\r\n granted = \"granted\",\r\n denied = \"denied\"\r\n}\r\n\r\nexport class CookiesConsent {\r\n date: Date = null;\r\n gtmConsent: GtmConsent = new GtmConsent();\r\n}\r\n\r\nexport class GtmConsent {\r\n readonly functionality_storage: CookiesConsentStatus = CookiesConsentStatus.granted;\r\n ad_storage: CookiesConsentStatus = CookiesConsentStatus.denied;\r\n analytics_storage: CookiesConsentStatus = CookiesConsentStatus.denied;\r\n personalization_storage: CookiesConsentStatus = CookiesConsentStatus.denied;\r\n security_storage: CookiesConsentStatus = CookiesConsentStatus.denied;\r\n\r\n wait_for_update: number = 2000;\r\n\r\n setAllGranted() {\r\n this.ad_storage = CookiesConsentStatus.granted;\r\n this.analytics_storage = CookiesConsentStatus.granted;\r\n this.personalization_storage = CookiesConsentStatus.granted;\r\n this.security_storage = CookiesConsentStatus.granted;\r\n }\r\n\r\n\r\n setDefault() {\r\n this.ad_storage = CookiesConsentStatus.denied;\r\n this.analytics_storage = CookiesConsentStatus.denied;\r\n this.personalization_storage = CookiesConsentStatus.denied;\r\n this.security_storage = CookiesConsentStatus.denied;\r\n }\r\n}\r\n\r\nexport interface CookiesConsentGroupSelector {\r\n id: number;\r\n code: string;\r\n isPreselected: boolean;\r\n name: string;\r\n description: string;\r\n cookiesCount: number;\r\n isSelected: boolean;\r\n isDisabled: boolean;\r\n}\r\n\r\n\r\nexport interface CookiesConsentCookieSelector {\r\n id: number;\r\n groupId: number;\r\n groupCode: string;\r\n scriptId: number;\r\n script: string;\r\n name: string;\r\n vendor: string;\r\n maxAge: number;//seconds\r\n type: CookieConsentCookieType;\r\n description: string;\r\n}\r\n\r\n\r\nexport interface CookiesConsentScriptSelector {\r\n id: number;\r\n code: string;\r\n name: string;\r\n vendor: string;\r\n cookies: Array;\r\n}\r\n\r\nexport enum CookieConsentCookieType {\r\n cookie = 'cookie',\r\n httpCookie = 'httpCookie',\r\n localStorage = 'localStorage',\r\n sessionStorage = 'sessionStorage'\r\n}\r\n\r\n\r\nexport interface CookiesConsentTexts {\r\n about: string;\r\n consentText: string;\r\n}\r\n\r\n\r\nexport class ResetableReplaySubject extends ReplaySubject {\r\n\r\n /*\r\n * clears the internal buffer, so all subscribers stay subscribed, but they do not receive any message\r\n * until another next() is called\r\n * */\r\n clearBuffer(): void {\r\n const that: any = this;\r\n that._events = [];\r\n }\r\n}\r\n\r\n\r\nexport type CookieModalResultAction = 'saveall' | 'saveselected';\r\n\r\nexport interface CookieModalResult {\r\n action: CookieModalResultAction;\r\n cookieGroups?: CookiesConsentGroupSelector[]\r\n}","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {NumberIndexedObject, Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {GeneralDialogRef} from \"../general-dialog/common\";\r\nimport {GeneralDialogConfig} from \"../general-dialog/general-dialog-config\";\r\nimport {CookieModalResult, CookiesConsentGroupSelector, CookiesConsentTexts} from \"./common\";\r\nimport {take} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-cookie-consent-modal',\r\n templateUrl: './cookie-consent-modal.html',\r\n styleUrls: ['../../assets/styles/2-components/modal-window/modal-cookie-consent.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CookieConsentModalComponent extends Translatable {\r\n\r\n cookieGroups: CookiesConsentGroupSelector[]\r\n cookiesConsentTexts: CookiesConsentTexts;\r\n\r\n showDescrDic: NumberIndexedObject = {};\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService, private http: HttpClient,\r\n private dialogRef: GeneralDialogRef, private config: GeneralDialogConfig\r\n ) {\r\n super(dataSvc, seSvc);\r\n\r\n if (this.config && this.config.data) {\r\n this.cookieGroups = this.config.data;\r\n\r\n let funcCookie = this.cookieGroups.find(x => x.code == 'functionality_storage');\r\n if (funcCookie) {\r\n funcCookie.isSelected = true;\r\n funcCookie.isDisabled = true;\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getTexts();\r\n }\r\n\r\n closeDialog(ret: CookieModalResult): void {\r\n this.dialogRef.close(ret);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n enableSelected(): void {\r\n this.closeDialog({\r\n action: 'saveselected',\r\n cookieGroups: this.cookieGroups\r\n });\r\n }\r\n\r\n enableAll(): void {\r\n this.closeDialog({\r\n action: 'saveall'\r\n });\r\n }\r\n private getTexts() {\r\n this.http.get('api/cookies-consent/get-cookie-consent-texts')\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n this.cookiesConsentTexts = res;\r\n });\r\n }\r\n\r\n toogleGroupActive(group: CookiesConsentGroupSelector) {\r\n if (!this.cookieGroups) return;\r\n if (!group.isDisabled) {\r\n group.isSelected = !group.isSelected\r\n }\r\n }\r\n\r\n showDescription(idx: number): boolean {\r\n return !!this.showDescrDic[idx];\r\n }\r\n\r\n toggleDescription(idx: number): void {\r\n this.showDescrDic[idx] = !!!this.showDescrDic[idx];\r\n }\r\n}\r\n","\r\n\r\n\r\n","import {AfterViewInit, Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CookieModalResult, CookiesConsent, CookiesConsentGroupSelector, CookiesConsentStatus, CookiesConsentTexts} from \"./common\";\r\nimport {take, takeUntil} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {CookiesConsentService} from \"./cookies-consent.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {GeneralDialogService} from \"../general-dialog/general-dialog.service\";\r\nimport {CookieConsentModalComponent} from \"./cookie-consent-modal.component\";\r\nimport {GeneralDialogRef} from \"../general-dialog/common\";\r\nimport {GeneralDialogConfig} from \"../general-dialog/general-dialog-config\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-cookie-consent',\r\n templateUrl: '../../tpl/cookie-consent.html',\r\n styleUrls: ['../../assets/styles/2-components/cookie-consent.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CookiesConsentComponent extends Translatable implements AfterViewInit {\r\n\r\n get showWarning(): boolean {\r\n return this.ccSvc.showWarning;\r\n }\r\n\r\n set showWarning(value: boolean) {\r\n this.ccSvc.showWarning = value;\r\n }\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n // form: FormGroup;\r\n cookiesConsentTexts: CookiesConsentTexts;\r\n\r\n activeDescription: string;\r\n activeGroupId: number;\r\n\r\n allGroups: Array;\r\n\r\n dialogRef: GeneralDialogRef;\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private http: HttpClient,\r\n private ccSvc: CookiesConsentService, private dialogSvc: GeneralDialogService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.ccSvc.dataLoadedEvent.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.allGroups = this.ccSvc.groups;\r\n if(this.allGroups?.length>0) {\r\n this.setCookieGroups();\r\n }\r\n });\r\n\r\n this.ccSvc.getAllGroups();\r\n this.getTexts();\r\n }\r\n\r\n setCookieGroups(): void {\r\n let itm = this.allGroups.find(x => x.code == 'personalization_storage');\r\n if (itm) itm.isSelected = this.ccSvc.isPersonalizationConsent();\r\n itm = this.allGroups.find(x => x.code == 'analytics_storage');\r\n if (itm) itm.isSelected = this.ccSvc.isAnalyticsConsent();\r\n itm = this.allGroups.find(x => x.code == 'ad_storage');\r\n if (itm) itm.isSelected = this.ccSvc.isAdsConsent();\r\n itm = this.allGroups.find(x => x.code == 'security_storage');\r\n if (itm) itm.isSelected = this.ccSvc.isSecurityConsent();\r\n }\r\n\r\n\r\n private getTexts() {\r\n this.http.get('api/cookies-consent/get-cookie-consent-texts')\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n this.cookiesConsentTexts = res;\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.ngUnsubscribe) {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n\r\n enableRequired() {\r\n const consent: CookiesConsent = new CookiesConsent();\r\n consent.date = new Date();\r\n consent.gtmConsent.setDefault();\r\n this.ccSvc.setConsent(consent);\r\n this.ccSvc.showWarning = false;\r\n }\r\n\r\n enableSelected(arr: CookiesConsentGroupSelector[]) {\r\n const consent: CookiesConsent = new CookiesConsent();\r\n consent.date = new Date();\r\n consent.gtmConsent.setDefault();\r\n consent.gtmConsent.personalization_storage = arr.find(x => x.code == 'personalization_storage')?.isSelected ? CookiesConsentStatus.granted : CookiesConsentStatus.denied;\r\n consent.gtmConsent.analytics_storage = arr.find(x => x.code == 'analytics_storage') ? CookiesConsentStatus.granted : CookiesConsentStatus.denied;\r\n consent.gtmConsent.ad_storage = arr.find(x => x.code == 'ad_storage') ? CookiesConsentStatus.granted : CookiesConsentStatus.denied;\r\n consent.gtmConsent.security_storage = arr.find(x => x.code == 'security_storage') ? CookiesConsentStatus.granted : CookiesConsentStatus.denied;\r\n this.ccSvc.setConsent(consent);\r\n this.ccSvc.showWarning = false;\r\n }\r\n\r\n enableAll() {\r\n const consent: CookiesConsent = new CookiesConsent();\r\n consent.date = new Date();\r\n consent.gtmConsent.setAllGranted();\r\n this.ccSvc.setConsent(consent);\r\n this.ccSvc.showWarning = false;\r\n }\r\n\r\n toggleSettings() {\r\n if (!this.dialogRef) {\r\n const config: GeneralDialogConfig = {\r\n data: this.allGroups,\r\n cssClassModifier: 'buy-window',\r\n isCloseAble: true,\r\n title: this.sen['cookies-consent-setting']\r\n };\r\n this.dialogRef = this.dialogSvc.open(CookieConsentModalComponent, config);\r\n this.dialogRef.afterClosed\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res: CookieModalResult) => {\r\n if(res) {\r\n if (res.action === 'saveall') {\r\n this.enableAll();\r\n } else if (res.action === 'saveselected') {\r\n this.enableSelected(res.cookieGroups);\r\n }\r\n }\r\n this.dialogRef = null;\r\n });\r\n } else {\r\n this.dialogRef.close();\r\n }\r\n }\r\n}","
\r\n
\r\n \r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CookiesConsentComponent} from \"./cookies-consent.component\";\r\nimport {ReactiveFormsModule} from \"@angular/forms\";\r\nimport {CookiesListComponent} from \"./cookies-list.component\";\r\nimport {JsScriptsComponent} from \"./js-scripts.component\";\r\nimport {GeneralDialogModule} from \"../general-dialog/general-dialog.module\";\r\nimport {CookieConsentModalComponent} from \"./cookie-consent-modal.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n ReactiveFormsModule,\r\n GeneralDialogModule,\r\n RouterModule\r\n ],\r\n declarations: [\r\n CookiesConsentComponent,\r\n CookieConsentModalComponent,\r\n CookiesListComponent,\r\n JsScriptsComponent\r\n ],\r\n exports: [\r\n CookiesConsentComponent,\r\n CookiesListComponent,\r\n JsScriptsComponent\r\n ]\r\n})\r\n\r\nexport class CookiesConsentModule {\r\n}","import {Injectable} from \"@angular/core\";\r\nimport {\r\n CookieConsentCookieType,\r\n CookiesConsent,\r\n CookiesConsentCookieSelector,\r\n CookiesConsentGroupSelector,\r\n CookiesConsentScriptSelector,\r\n CookiesConsentStatus,\r\n GtmConsent\r\n} from \"./common\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {take} from \"rxjs/operators\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport CookieInterceptor from \"cookie-interceptor\";\r\nimport {StorageInterceptor} from \"../../helpers/storage.interceptor\";\r\nimport {loadFromLocalStorage, saveToLocalStorage} from \"../../helpers/cookie.helper\";\r\nimport {ReplaySubject} from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class CookiesConsentService {\r\n\r\n userConsentKey: string = 'userConsentKey';\r\n\r\n registeredCookies: Array;\r\n registeredCookiesLoaded: boolean = false;\r\n\r\n dataLoadedEvent: ReplaySubject = new ReplaySubject(1);\r\n\r\n groups: Array = null;\r\n scripts: Array = null;\r\n\r\n defaultOrUpdate = 'default';\r\n showWarning: boolean = false; //is set in setDefaultConsent()\r\n\r\n\r\n private cookiesToRegister: Array = [];\r\n private userConsent: CookiesConsent = null;\r\n\r\n get lastUpdate(): string {\r\n if (!this.userConsent?.date) {\r\n return null;\r\n }\r\n const tmp = new Date(this.userConsent.date.toString());\r\n return `${tmp.getDate()}.${tmp.getMonth() + 1}.${tmp.getFullYear()}`;\r\n }\r\n\r\n isGtm(): boolean {\r\n if (this.seSvc.gaSettings.gtmId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isGoogleAnalytics(): boolean {\r\n if (this.seSvc.gaSettings.analyticsId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isGoogleAds(): boolean {\r\n if (this.seSvc.gaSettings.adsId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isGoogleAdsRemarketing(): boolean {\r\n if (this.seSvc.gaSettings.remarkId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isSklikConversion(): boolean {\r\n if (this.seSvc.seznamSettings.sklikConversionId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isSklikConversionEnabled() {\r\n if (!this.isSklikConversion()) {\r\n return false;\r\n }\r\n const script = this.scripts.find(s => s.code == 'sklik-conversion');\r\n return this.isScriptEnabled(script);\r\n }\r\n\r\n isSklikRetarget(): boolean {\r\n if (this.seSvc.seznamSettings.sklikRetargetingId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isSklikRetargetEnabled(): boolean {\r\n if (!this.isSklikRetarget()) {\r\n return false;\r\n }\r\n\r\n const script = this.scripts.find(s => s.code == 'sklik-retargeting');\r\n return this.isScriptEnabled(script);\r\n }\r\n\r\n isZboziConversion(): boolean {\r\n if (this.seSvc.seznamSettings.zboziConversionBranchId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isZboziConversionEnabled(): boolean {\r\n if (!this.isZboziConversion()) {\r\n return false;\r\n }\r\n\r\n const script = this.scripts.find(s => s.code == 'zbozi-conversion');\r\n return this.isScriptEnabled(script);\r\n }\r\n\r\n isHeureka(): boolean {\r\n if (this.seSvc.heurekaSettings.mereniKonverziKlic) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isHeurekaEnabled() {\r\n if (!this.isHeureka()) {\r\n return false;\r\n }\r\n const script = this.scripts.find(s => s.code == 'heureka');\r\n return this.isScriptEnabled(script);\r\n }\r\n\r\n\r\n constructor(private http: HttpClient, private seSvc: SettingsService) {\r\n\r\n this.seSvc.startUpSettingsAreSet.pipe(take(1))\r\n .subscribe(() => {\r\n this.userConsent = this.loadUserContent();\r\n if (!this.userConsent || !this.userConsent.date) {\r\n //uzivatel neklikl nikdy na nic\r\n this.setDefaultConsent();\r\n } else {\r\n this.defaultOrUpdate = 'update';\r\n this.setConsent(this.userConsent);\r\n }\r\n });\r\n\r\n this.getAllCookies();\r\n this.getAllScripts();\r\n }\r\n\r\n get isStorageInterceptingActive(): boolean {\r\n //if on local or on dev\r\n return location.host == 'localhost'\r\n || location.host.endsWith('.loc')\r\n || location.host.indexOf('scdev.') > -1;\r\n\r\n }\r\n\r\n /// this method works only on localhost or .loc or scdev. domains\r\n // in production environment it does nothing\r\n setStorageHooks(): void {\r\n\r\n if (this.isStorageInterceptingActive) {\r\n //cookies\r\n CookieInterceptor.init(); // Hijack the `document.cookie` object\r\n //when cookie is written use>\r\n CookieInterceptor.write.use((val) => {\r\n //our CookiesConsentService should know\r\n this.onSetCookie(val);\r\n return val;\r\n });\r\n\r\n StorageInterceptor.hijackLocalStorage(this);\r\n StorageInterceptor.hijackSessionStorage(this);\r\n }\r\n }\r\n\r\n private registerCookies(): void {\r\n if (!this.cookiesToRegister || !this.cookiesToRegister.length) {\r\n return;\r\n }\r\n const data = this.cookiesToRegister.filter(() => true);\r\n this.cookiesToRegister = [];\r\n data.forEach((i) => {\r\n console.warn('new storage item was registered', i);\r\n });\r\n this.http.post('api/cookies-consent/register', data)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n\r\n this.getAllCookies();\r\n });\r\n }\r\n\r\n private onSetCookie(cookie: string) {\r\n let splitted: Array = cookie.split('=');\r\n const name: string = splitted[0];\r\n // splitted = splitted[1].split(';');\r\n // const value = splitted[0];\r\n splitted = cookie.split(';');\r\n let expires: number = null;\r\n let maxAge: number = null;\r\n\r\n if (splitted.length > 1) {\r\n for (let i = 1; i < splitted.length; i++) {\r\n const current: string = splitted[i];\r\n const currentSplitted = current.split('=');\r\n\r\n switch (currentSplitted[0]) {\r\n case 'max-age':\r\n maxAge = Number(currentSplitted[1]);\r\n break;\r\n case 'expires':\r\n expires = Date.parse(currentSplitted[1]);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (expires) {\r\n const now = Date.parse(new Date().toUTCString());\r\n maxAge = (expires - now) / 1000;\r\n }\r\n\r\n const cookieObj: CookiesConsentCookieSelector = {\r\n name,\r\n groupId: null,\r\n groupCode: null,\r\n id: null,\r\n type: CookieConsentCookieType.cookie,\r\n vendor: null,\r\n maxAge,\r\n description: null,\r\n script: null,\r\n scriptId: null\r\n };\r\n\r\n if (!this.isCookieRegistered(cookieObj)) {\r\n this.cookiesToRegisterPush(cookieObj);\r\n if (this.registeredCookiesLoaded) {\r\n this.registerCookies();\r\n }\r\n }\r\n }\r\n\r\n private isCookieRegistered(cookie: CookiesConsentCookieSelector): boolean {\r\n if (!this.registeredCookies || !this.registeredCookies.length) {\r\n return false;\r\n }\r\n if (this.registeredCookies.find((rc) => {\r\n return rc.name == cookie.name && rc.type == cookie.type;\r\n })) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onLocalStorageSetItem(key: string) {\r\n const item: CookiesConsentCookieSelector = {\r\n name: key,\r\n groupId: null,\r\n groupCode: null,\r\n id: null,\r\n type: CookieConsentCookieType.localStorage,\r\n vendor: null,\r\n maxAge: null,\r\n description: null,\r\n script: null,\r\n scriptId: null\r\n };\r\n if (!this.isCookieRegistered(item)) {\r\n this.cookiesToRegisterPush(item);\r\n\r\n if (this.registeredCookiesLoaded) {\r\n this.registerCookies();\r\n }\r\n }\r\n }\r\n\r\n onSessionStorageSetItem(key: string) {\r\n const item: CookiesConsentCookieSelector = {\r\n name: key,\r\n groupId: null,\r\n groupCode: null,\r\n id: null,\r\n type: CookieConsentCookieType.sessionStorage,\r\n vendor: null,\r\n maxAge: null,\r\n description: null,\r\n script: null,\r\n scriptId: null\r\n };\r\n if (!this.isCookieRegistered(item)) {\r\n this.cookiesToRegisterPush(item);\r\n\r\n if (this.registeredCookiesLoaded) {\r\n this.registerCookies();\r\n }\r\n }\r\n }\r\n\r\n private cookiesToRegisterPush(item: CookiesConsentCookieSelector) {\r\n if (!this.cookiesToRegister) {\r\n this.cookiesToRegister = [];\r\n }\r\n if (this.cookiesToRegister.find(i => i.name == item.name && i.type == item.type)) {\r\n return;\r\n }\r\n this.cookiesToRegister.push(item);\r\n }\r\n\r\n private cleanCookiesToRegister() {\r\n this.cookiesToRegister = this.cookiesToRegister.filter((cr) => {\r\n return !this.isCookieRegistered(cr);\r\n })\r\n }\r\n\r\n getAllCookies(): void {\r\n this.http.get>('api/cookies-consent/get-all-cookies')\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n this.registeredCookies = res;\r\n this.registeredCookiesLoaded = true;\r\n this.cleanCookiesToRegister();\r\n this.registerCookies();\r\n this.dataLoadedEvent.next();\r\n });\r\n }\r\n\r\n getAllScripts(): void {\r\n\r\n this.http.get>('api/cookies-consent/get-all-scripts')\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n this.scripts = res;\r\n this.dataLoadedEvent.next();\r\n });\r\n }\r\n\r\n getAllGroups(): void {\r\n this.http.get>('api/cookies-consent/get-all-groups')\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n this.groups = res;\r\n this.dataLoadedEvent.next();\r\n });\r\n }\r\n\r\n getCookies(groupId: number): Array {\r\n let ret: Array = null;\r\n if (!this.registeredCookies) {\r\n //\r\n } else if (!groupId) {\r\n ret = this.registeredCookies;\r\n } else {\r\n ret = this.registeredCookies.filter(c => c.groupId == groupId);\r\n }\r\n return ret;\r\n }\r\n\r\n gtag(arg0: string, arg1: string | Date, arg2: GtmConsent = null): void {\r\n (window).dataLayer = (window).dataLayer || [];\r\n\r\n const args: any = {'0': arg0, '1': arg1};\r\n\r\n if (arg2) {\r\n args['2'] = arg2;\r\n }\r\n (window).dataLayer.push(args);\r\n }\r\n\r\n setConsent(consent: CookiesConsent): void {\r\n this.userConsent = consent;\r\n this.storeUserConsent();\r\n this.gtag('consent', this.defaultOrUpdate, consent.gtmConsent);\r\n this.defaultOrUpdate = 'update';\r\n this.gtag('js', new Date());\r\n this.gtag('config', this.seSvc.gaSettings.analyticsId);\r\n }\r\n\r\n private storeUserConsent() {\r\n saveToLocalStorage(this.userConsentKey, this.userConsent);\r\n }\r\n\r\n private loadUserContent(): CookiesConsent {\r\n return loadFromLocalStorage(this.userConsentKey);\r\n }\r\n\r\n setDefaultConsent(): void {\r\n this.showWarning = true;\r\n const consent = new CookiesConsent();\r\n consent.gtmConsent.setDefault();\r\n this.setConsent(consent);\r\n }\r\n\r\n\r\n private isScriptEnabled(script: CookiesConsentScriptSelector) {\r\n if (!script) {\r\n return false;\r\n }\r\n\r\n if (script.cookies?.find(c => c.groupCode == \"unclassified_storage\")\r\n ) {\r\n return false;\r\n }\r\n\r\n if (!this.userConsent || !this.userConsent.gtmConsent) {\r\n return false;\r\n }\r\n\r\n if (this.userConsent.gtmConsent.ad_storage == CookiesConsentStatus.denied\r\n && script.cookies?.find(c => c.groupCode == \"ad_storage\")\r\n ) {\r\n return false;\r\n }\r\n\r\n if (this.userConsent.gtmConsent.analytics_storage == CookiesConsentStatus.denied\r\n && script.cookies?.find(c => c.groupCode == \"analytics_storage\")\r\n ) {\r\n return false;\r\n }\r\n\r\n if (this.userConsent.gtmConsent.personalization_storage == CookiesConsentStatus.denied\r\n && script.cookies?.find(c => c.groupCode == \"personalization_storage\")\r\n ) {\r\n return false;\r\n }\r\n\r\n if (this.userConsent.gtmConsent.security_storage == CookiesConsentStatus.denied\r\n && script.cookies?.find(c => c.groupCode == \"security_storage\")\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n isAnalyticsConsent(): boolean {\r\n if (this.userConsent?.gtmConsent?.analytics_storage == CookiesConsentStatus.granted) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isAdsConsent(): boolean {\r\n if (this.userConsent?.gtmConsent?.ad_storage == CookiesConsentStatus.granted) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isSecurityConsent(): boolean {\r\n if (this.userConsent?.gtmConsent?.security_storage == CookiesConsentStatus.granted) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isPersonalizationConsent(): boolean {\r\n if (this.userConsent?.gtmConsent?.personalization_storage == CookiesConsentStatus.granted) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n isFunctionalityConsent(): boolean {\r\n //mel by byt dycky true\r\n if (this.userConsent?.gtmConsent?.functionality_storage == CookiesConsentStatus.granted) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CookiesConsentService} from \"./cookies-consent.service\";\r\nimport {CookiesConsentCookieSelector} from \"./common\";\r\nimport {take} from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: 'cmp-cookies-list',\r\n templateUrl: '../../tpl/cookies-list.html',\r\n styleUrls: ['../../assets/styles/2-components/cookie-consent.scss', './styles.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CookiesListComponent extends Translatable {\r\n\r\n private _groupId:number;\r\n @Input() set groupId(value:number){\r\n this._groupId = value;\r\n this.getCookies(value);\r\n }\r\n get groupId():number{\r\n return this._groupId;\r\n }\r\n\r\n cookies:Array;\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private ccSvc: CookiesConsentService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n\r\n private getCookies(groupid: number):void {\r\n this.ccSvc.dataLoadedEvent.pipe(take(1))\r\n .subscribe(()=>{\r\n this.cookies = this.ccSvc.getCookies(groupid);\r\n });\r\n }\r\n\r\n getCookieExpiration(cookie: CookiesConsentCookieSelector):string {\r\n return cookie?.maxAge?.toString();\r\n }\r\n\r\n getCookieType(cookie: CookiesConsentCookieSelector):string {\r\n return cookie?.type;\r\n }\r\n}","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{sen['cookies-consent-name']}}{{sen['cookies-consent-vendor']}}{{sen['cookies-consent-purpose']}}{{sen['cookies-consent-expiration']}}{{sen['cookies-consent-type']}}
{{cookie.name}}{{cookie.vendor}}{{cookie.description}}{{getCookieExpiration(cookie)}}{{getCookieType(cookie)}}
","import {Component, Inject, Renderer2, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CookiesConsentService} from \"./cookies-consent.service\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-js-scripts',\r\n templateUrl: '../../tpl/js-scripts.html',\r\n styleUrls: [],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class JsScriptsComponent extends Translatable {\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n public ccSvc: CookiesConsentService,\r\n private renderer:Renderer2,\r\n @Inject(DOCUMENT) private document: Document) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit() {\r\n this.addGTM();\r\n this.addGA();\r\n }\r\n\r\n\r\n private addGA() {\r\n if(!this.ccSvc.isGoogleAnalytics())\r\n {\r\n return;\r\n }\r\n\r\n let script = this.renderer.createElement('script');\r\n script.src = `https://www.googletagmanager.com/gtag/js?id=${this.seSvc.gaSettings.analyticsId}`;\r\n script.async = true;\r\n this.renderer.appendChild(this.document.body, script);\r\n\r\n\r\n const txt = `window.dataLayer = window.dataLayer || [];\r\n function gtag() { dataLayer.push(arguments); }\r\n gtag('js', new Date());`;\r\n this.addScript(txt);\r\n }\r\n\r\n\r\n private addGTM() {\r\n if(!this.ccSvc.isGtm())\r\n {\r\n return;\r\n }\r\n\r\n const txt = `(function (w, d, s, l, i) {\r\n w[l] = w[l] || []; w[l].push({\r\n 'gtm.start':\r\n new Date().getTime(), event: 'gtm.js'\r\n }); var f = d.getElementsByTagName(s)[0],\r\n j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =\r\n 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);\r\n })(window, document, 'script', 'dataLayer', '${this.seSvc.gaSettings.gtmId}');`;\r\n this.addScript(txt);\r\n }\r\n\r\n private addScript(scriptText:string){\r\n let script = this.renderer.createElement('script');\r\n //script.type = `application/ld+json`;\r\n script.text = scriptText;\r\n\r\n this.renderer.appendChild(this.document.body, script);\r\n }\r\n}","import {Component, HostListener, ViewEncapsulation} from '@angular/core';\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Culture, Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-culture',\r\n templateUrl: './culture.html',\r\n styleUrls: ['../../assets/styles/layout.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class CultureComponent extends Translatable {\r\n\r\n cultureOptions: Culture[];\r\n selectedCulture: Culture;\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.cultureOptions = seSvc.settings.cultures;//.filter(x => x.cultureId != 34);\r\n this.selectedCulture = this.seSvc.culture;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n setCulture(id: number): void {\r\n this.dataSvc.cultureExpand(false);\r\n this.selectedCulture = this.cultureOptions.filter(c => c.cultureId == id)[0];\r\n this.seSvc.setCultureAndReload(true, id, this.seSvc.currencyId, true);\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClickOut(ev: any): void {\r\n const $target = $(ev.target);\r\n\r\n if ($target.closest('.header-language__current').length === 0) {\r\n this.dataSvc.cultureExpand(false);\r\n }\r\n }\r\n}\r\n","
1\">\r\n
\r\n
\r\n {{sen[selectedCulture.translationKey]}}\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ReactiveFormsModule} from \"@angular/forms\";\r\nimport {CultureComponent} from \"./culture.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n CultureComponent\r\n ],\r\n declarations: [\r\n CultureComponent\r\n ]\r\n})\r\n\r\nexport class CultureModule {\r\n}","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {\r\n DeliveryPayment,\r\n DeliveryPaymentRelationSelector,\r\n DeliverySelector,\r\n ParcelShopsRequest,\r\n PaymentSelector\r\n} from \"../cart/common\";\r\nimport {DeliveryFreeFromResult} from \"./common\";\r\nimport {Observable, zip} from \"rxjs\";\r\nimport {map, take, tap} from \"rxjs/operators\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\n\r\n@Injectable()\r\nexport class DeliveryPaymentService {\r\n\r\n get deliveryPayment(): DeliveryPayment {\r\n return this._deliveryPayment;\r\n }\r\n\r\n set deliveryPayment(value: DeliveryPayment) {\r\n this._deliveryPayment = value;\r\n if (!value || !value.delivery||!value.payment) {\r\n this.setDefaults();\r\n } else {\r\n this.deliveryPaymentSetFromPersistence.emit(value);\r\n }\r\n }\r\n\r\n get payments(): PaymentSelector[] {\r\n return this._payments;\r\n }\r\n\r\n set payments(value: PaymentSelector[]) {\r\n this._payments = value;\r\n }\r\n\r\n get deliveries(): DeliverySelector[] {\r\n return this._deliveries;\r\n }\r\n\r\n set deliveries(value: DeliverySelector[]) {\r\n this._deliveries = value;\r\n }\r\n\r\n get relations(): DeliveryPaymentRelationSelector[] {\r\n return this._relations;\r\n }\r\n\r\n set relations(value: DeliveryPaymentRelationSelector[]) {\r\n this._relations = value;\r\n }\r\n\r\n get cartPrice(): number {\r\n return this._cartPrice;\r\n }\r\n\r\n // from cart.service\r\n set cartPrice(value: number) {\r\n this._cartPrice = value;\r\n }\r\n\r\n get destinationCountryId(): number {\r\n return this._destinationCountryId;\r\n }\r\n\r\n set destinationCountryId(value: number) {\r\n this._destinationCountryId = value;\r\n }\r\n\r\n get deliveryFreeFrom(): number {\r\n return this._deliveryFreeFrom;\r\n }\r\n\r\n set deliveryFreeFrom(value: number) {\r\n this._deliveryFreeFrom = value;\r\n }\r\n\r\n private _deliveryFreeFrom: number;\r\n private _destinationCountryId: number;\r\n private _cartPrice: number;\r\n private _relations: DeliveryPaymentRelationSelector[] = [];\r\n private _deliveries: DeliverySelector[] = [];\r\n private _payments: PaymentSelector[] = [];\r\n private _deliveryPayment: DeliveryPayment;\r\n\r\n // toto je pro delivery-payment.component, abych mohl reagovat na to, ze jsi zastrcil\r\n // dopravu nebo platbu z persistence cart.service\r\n deliveryPaymentSetFromPersistence: EventEmitter = new EventEmitter();\r\n\r\n // toto je emitter pro konzumaci v cart.service\r\n deliveryPaymentChanged: EventEmitter = new EventEmitter();\r\n\r\n constructor(private http: HttpClient, private seSvc: SettingsService) {\r\n this.destinationCountryId = this.seSvc.settings.countries[0].id;\r\n this.deliveryPayment = {\r\n delivery: null,\r\n payment: null\r\n }\r\n this.getData()\r\n .subscribe(res => {\r\n this.deliveryPaymentChanged.emit(res);\r\n })\r\n }\r\n\r\n getDeliveries(): Observable {\r\n let url: string = `api/deliverypayment/getdeliveries/${this.destinationCountryId}`;\r\n return this.http.post(url, {cartPrice: this.cartPrice || 0});\r\n }\r\n\r\n getPayments(): Observable {\r\n let url: string = `api/deliverypayment/getpayments/${this.destinationCountryId}`;\r\n return this.http.post(url, {cartPrice: this.cartPrice || 0});\r\n }\r\n\r\n getRelations(): Observable {\r\n let url: string = `api/deliverypayment/getrelations/${this.destinationCountryId}`;\r\n return this.http.get(url);\r\n }\r\n\r\n getData(): Observable {\r\n return zip(\r\n this.getRelations(),\r\n this.getDeliveries(),\r\n this.getPayments()\r\n )\r\n .pipe(\r\n take(1),\r\n tap(res => {\r\n this.relations = res[0];\r\n this.deliveries = res[1];\r\n this.payments = res[2];\r\n }),\r\n map((_) => this.deliveryPayment)\r\n );\r\n }\r\n\r\n private setDefaults(): void {\r\n if ((this.relations.length > 0) && (this.relations.find(y => y.isDefault))) {\r\n const defaultRelation = this.relations.find(y => y.isDefault);\r\n const defaultDeliveryId = defaultRelation.deliveryId;\r\n const defaultPaymentId = defaultRelation.paymentId;\r\n this.deliveryPayment.delivery = this.deliveries.find(x => x.id === defaultDeliveryId);\r\n this.deliveryPayment.payment = this.payments.find(x => x.id === defaultPaymentId);\r\n }\r\n if (!this.deliveryPayment.delivery) {\r\n this.deliveryPayment.delivery = this.deliveries[0];\r\n this.deliveryPayment.payment = this.payments[0];\r\n }\r\n }\r\n\r\n getDeliveryFreeFrom(countryId: number): Observable {\r\n return this.http.get(`api/deliverypayment/delivery-free-from/${countryId}`);\r\n }\r\n\r\n getDeliveryUlozenkaBranches(): any {\r\n return this.http.get(`api/deliverypayment/get-ulozenka-deliveres`);\r\n }\r\n\r\n getGlobalDeliveryFreeFromActive() {\r\n return this.http.get('api/settings/delivery-free-from-active');\r\n }\r\n\r\n pplInformation(request: ParcelShopsRequest): any {\r\n let url = `api/deliverypayment/get-ppl-filter`;\r\n return this.http.post(url, request);\r\n }\r\n\r\n cpBranchInformation(request: ParcelShopsRequest): any {\r\n let url = `api/deliverypayment/get-cppo-filter`;\r\n return this.http.post(url, request);\r\n }\r\n\r\n zasilkovnaApi(): any {\r\n let url = 'api/deliverypayment/get-zasilkovna-api';\r\n return this.http.get(url);\r\n }\r\n}\r\n","import {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {Distributor} from \"./common\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n templateUrl: './distributor-box.html',\r\n selector: 'cmp-distributor-box',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class DistributorBoxComponent extends Translatable {\r\n\r\n item: Distributor;\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n\r\n}","\r\n
\r\n
\r\n
\r\n {{item.name}}\r\n
\r\n\r\n
\r\n {{item.spec}}\r\n
\r\n
\r\n\r\n
\r\n {{item.street}},
\r\n {{item.zipCode}} {{item.city}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {{item.phoneWithAreaCode}}\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{sen['distributor-whatsapp']}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {DistributorBoxComponent} from \"./distributor-box.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n RouterModule\r\n ],\r\n declarations: [\r\n DistributorBoxComponent\r\n ],\r\n exports: [\r\n DistributorBoxComponent\r\n ],\r\n providers: []\r\n})\r\n\r\nexport class DistributorBoxModule {\r\n}\r\n","import {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ExperienceConfig} from \"./common\";\r\nimport {finalize, takeUntil} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Component({\r\n templateUrl: './experience.html',\r\n selector: 'cmp-experience',\r\n styleUrls: ['../../assets/styles/2-components/about-numbers.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ExperienceComponent extends Translatable {\r\n\r\n setts: ExperienceConfig;\r\n\r\n imagePathPrefix: string;\r\n backgroundImageStyle: string = '';\r\n backgroundImagePath: string = '';\r\n\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private http:HttpClient) {\r\n super(dataSvc, seSvc);\r\n\r\n this.imagePathPrefix = seSvc.settings.newImageServerUrl;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private getData() {\r\n this.dataSvc.dataLoading = true;\r\n this.http.get('/api/settings/experience-config')\r\n .pipe(takeUntil(this.ngUnsubscribe),\r\n finalize(() => {\r\n this.dataSvc.dataLoading = false\r\n })\r\n )\r\n .subscribe((res) => {\r\n this.setts = res;\r\n this.backgroundImageStyle = `url(${this.imagePathPrefix}/orig/${this.setts.imagePath})`;\r\n this.backgroundImagePath = this.setts.imagePath;\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n\r\n \"\"\r\n \r\n
\r\n\r\n
\r\n
\r\n

\r\n {{sen['experience-title']}}\r\n

\r\n\r\n
\r\n
\r\n
\r\n
\r\n {{sen['experience-number-'+(i+1)]}}\r\n
\r\n\r\n
\r\n {{sen['experience-text-'+(i+1)]}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ExperienceComponent} from \"./experience.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n RouterModule,\r\n CustomPipesModule\r\n ],\r\n declarations: [\r\n ExperienceComponent\r\n ],\r\n exports: [\r\n ExperienceComponent\r\n ],\r\n providers: []\r\n})\r\n\r\nexport class ExperienceModule {\r\n}\r\n","import {AfterViewInit, Component} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormGroup} from \"@angular/forms\";\r\nimport {GeneralDialogRef} from \"../general-dialog/common\";\r\nimport {GeneralDialogConfig} from \"../general-dialog/general-dialog-config\";\r\nimport {FlexCaptchaExecuteResult} from \"../../services/flex-captcha.service\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n templateUrl: 'fall-back-captcha.dialog.html'\r\n})\r\n\r\nexport class FallBackCaptchaDialog extends Translatable implements AfterViewInit {\r\n\r\n code: string = FallBackCaptchaDialog.generateFallBackCode();\r\n codeForm: FormGroup;\r\n private cntr: number = 0;\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private fb: FormBuilder, private dialogRef: GeneralDialogRef,\r\n private config: GeneralDialogConfig) {\r\n super(dataSvc, seSvc);\r\n\r\n this.dataSvc.dataLoading = false;\r\n this.createForm();\r\n }\r\n\r\n private createForm(): void {\r\n this.codeForm = this.fb.group({\r\n userInput: []\r\n })\r\n }\r\n\r\n verify(): void {\r\n const res = this.code === this.codeForm.get('userInput').value;\r\n if (res) {\r\n this.config.data.success = true;\r\n this.dialogRef.close(this.config.data);\r\n } else {\r\n if (this.cntr < 2) {\r\n this.codeForm.patchValue({\r\n userInput: null\r\n });\r\n this.code = FallBackCaptchaDialog.generateFallBackCode();\r\n this.cntr++;\r\n } else {\r\n this.cntr = 0;\r\n const result: FlexCaptchaExecuteResult = {success: false, score: 0, secret: null};\r\n this.dialogRef.close(result);\r\n }\r\n }\r\n }\r\n\r\n onKey(evt: KeyboardEvent): void {\r\n if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n this.verify();\r\n }\r\n }\r\n\r\n private static generateFallBackCode(): string {\r\n return Math.floor(100000 + Math.random() * 900000).toString();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n $('#userInput').focus();\r\n }\r\n\r\n}\r\n\r\n","
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {FallBackCaptchaDialog} from \"./fall-back-captcha.dialog\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ],\r\n declarations: [\r\n FallBackCaptchaDialog\r\n ],\r\n exports: [\r\n FallBackCaptchaDialog\r\n ]\r\n})\r\n\r\nexport class FallBackCaptchaModule {\r\n\r\n}\r\n","/**\r\n * Created by jan.hroch on 27.06.2017.\r\n */\r\nimport {Component, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation} from \"@angular/core\";\r\nimport {ArticleBriefSelector, Culture, SearchSelector, Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {isLocalImagePath} from \"../../helpers/string.helper\";\r\nimport {Router} from \"@angular/router\";\r\nimport {ProductSelector} from \"../product/common\";\r\n\r\n@Component({\r\n selector: 'cmp-flex-suggest-list',\r\n templateUrl: '../../tpl/flex-suggest-list.html',\r\n styleUrls: ['../../assets/styles/2-components/whisperer.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class FlexSuggestListComponent extends Translatable implements OnChanges {\r\n\r\n @Input() suggestResult: SearchSelector;\r\n @Input() phrase: string;\r\n\r\n @Input() listTypeFull: boolean = false;\r\n\r\n @Output() queryHide: EventEmitter;\r\n @Output() forceSearch: EventEmitter;\r\n\r\n imagePathPrefix: string;\r\n culture: Culture;\r\n currencySymbol: string;\r\n\r\n articlePageSize: number = 6;\r\n articlePage: ArticleBriefSelector[];\r\n showAllArticles: boolean;\r\n\r\n productPageSize: number = 6;\r\n productPage: ProductSelector[];\r\n showAllProducts: boolean;\r\n\r\n decimalPattern: string = '1.0-0';\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private router: Router) {\r\n super(dataSvc, seSvc);\r\n\r\n this.imagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n this.queryHide = new EventEmitter();\r\n this.forceSearch = new EventEmitter();\r\n this.culture = this.seSvc.culture;\r\n this.currencySymbol = this.seSvc.settings.currencies[this.seSvc.currencyId];\r\n this.decimalPattern = `1.${this.seSvc.settings.decimalSettings.Whisperer}-${this.seSvc.settings.decimalSettings.Whisperer}`;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && this.suggestResult) {\r\n this.articlePage = this.suggestResult.articles ? this.suggestResult.articles.slice(0, this.articlePageSize) : [];\r\n this.showAllArticles = false;\r\n this.productPage = this.suggestResult.products ? this.suggestResult.products.slice(0, this.productPageSize) : [];\r\n this.showAllProducts = false;\r\n }\r\n }\r\n\r\n linkClicked(): void {\r\n this.queryHide.emit(true);\r\n }\r\n\r\n onComponentClick(evt: any): void {\r\n evt.stopPropagation();\r\n }\r\n\r\n isExternalImage(path: string): boolean {\r\n return !isLocalImagePath(path);\r\n }\r\n\r\n goToLink(link: string): void {\r\n this.queryHide.emit(true);\r\n this.dataSvc.searchShow(false);\r\n this.router.navigateByUrl(link);\r\n }\r\n\r\n search(phrase: string, evt: any): void {\r\n evt.stopPropagation();\r\n this.forceSearch.emit(phrase);\r\n }\r\n\r\n onArticleShowAllClick(): void {\r\n this.showAllArticles = !this.showAllArticles;\r\n this.articlePage = this.suggestResult.articles;\r\n }\r\n\r\n onProductNextPageClick(): void {\r\n this.showAllProducts = !this.showAllProducts;\r\n this.productPage = this.suggestResult.products;\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (evt.key === 'Escape') {\r\n this.queryHide.emit(true);\r\n }\r\n }\r\n\r\n\r\n}\r\n","0 || suggestResult?.productCount>0 || suggestResult?.articleCount>0; else noDataFound\">\r\n
\r\n
\r\n
\r\n \r\n
0\">\r\n
\r\n {{sen['search-categories']}} ({{suggestResult?.categoryCount}})\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n
0\">\r\n
\r\n {{sen['search-products']}} ({{suggestResult?.productCount}})\r\n
\r\n\r\n \r\n\r\n
productPageSize && !showAllProducts && listTypeFull\">\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
0\">\r\n
\r\n {{sen['search-articles']}} ({{suggestResult.articleCount}})\r\n
\r\n\r\n \r\n\r\n
articlePageSize && !showAllArticles && listTypeFull\">\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{sen['search-result-question']}}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
","/**\r\n * Created by jiri.kopel on 06.03.2019.\r\n */\r\nimport {AfterViewInit, Component, ElementRef, HostListener, Input, ViewChild, ViewEncapsulation} from \"@angular/core\";\r\nimport {ProductRequestType, SearchRequest, SearchSelector, Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {fromEvent, Subject} from \"rxjs\";\r\nimport {SearchService} from \"../../services/search.service\";\r\nimport {toQueryStringParam} from \"../../helpers/string.helper\";\r\nimport {debounceTime, filter, map, switchMap, takeUntil} from \"rxjs/operators\";\r\n\r\n\r\ndeclare let $: any;\r\ndeclare let StringView: any;\r\n\r\n@Component({\r\n selector: 'cmp-flex-suggest',\r\n templateUrl: '../../tpl/flex-suggest.html',\r\n styleUrls: ['../../assets/styles/3-layout/header/search.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class FlexSuggestComponent extends Translatable implements AfterViewInit {\r\n\r\n @Input() place: string = '';\r\n\r\n @ViewChild('phrase', {static: true}) phrase: ElementRef;\r\n\r\n searchBoxVisible: boolean = false;\r\n listTypeFull: boolean = false;\r\n suggestVisible: boolean = false;\r\n suggestResult: SearchSelector;\r\n showSearchInput: boolean = false;\r\n\r\n enterFired: Subject = new Subject();\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private http: HttpClient, private searchSvc: SearchService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.dataSvc.suggestSearchVisibleChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((show) => {\r\n if (show) {\r\n setTimeout(() => {\r\n this.phrase.nativeElement.focus();\r\n }, 0)\r\n }\r\n })\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.bindSuggest();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n this.enterFired.complete();\r\n }\r\n\r\n private bindSuggest(): void {\r\n const searchBox = this.phrase.nativeElement;\r\n fromEvent(searchBox, 'input')\r\n .pipe(\r\n map((e: any) => e.target.value),\r\n filter(text => text.length > 2),\r\n debounceTime(333),\r\n switchMap((s: string) => this.getSuggest(s)),\r\n takeUntil(this.enterFired),\r\n takeUntil(this.ngUnsubscribe)\r\n )\r\n .subscribe((res: SearchSelector) => {\r\n this.suggestResult = res;\r\n this.suggestVisible = true;\r\n });\r\n }\r\n\r\n searchKeyUp(evt: KeyboardEvent, phrase: string): void {\r\n if (evt.key === 'Escape') {\r\n this.clearSearch();\r\n } else if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n this.enterFired.next();\r\n this.search(phrase);\r\n } else {\r\n // this.suggestVisible = false;\r\n }\r\n }\r\n\r\n search(phrase: string): void {\r\n this.searchSvc.fireSearchInputChanged(phrase);\r\n\r\n if (phrase.trim().length > 2) {\r\n\r\n // if (!this.listTypeFull) this.suggestResult = null;\r\n this.listTypeFull = true;\r\n\r\n let request: SearchRequest = {\r\n phrase: decodeURI(phrase.trim()),\r\n pageIndex: 1,\r\n pageSize: 0,\r\n quickType: false,\r\n requestType: ProductRequestType.VariantKey\r\n };\r\n let searchRequestString = toQueryStringParam(request);\r\n console.log('search',request);\r\n\r\n this.http.get(`api/search?params=${searchRequestString}`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.suggestResult = res;\r\n this.suggestVisible = true;\r\n this.bindSuggest();\r\n });\r\n }\r\n }\r\n\r\n\r\n getSuggest(phrase: string): any {\r\n\r\n //if (this.listTypeFull) this.suggestResult = null;\r\n this.listTypeFull = false;\r\n\r\n let request: SearchRequest = {\r\n phrase: decodeURI(phrase),\r\n pageIndex: 1,\r\n pageSize: 15,\r\n quickType: true,\r\n requestType: ProductRequestType.VariantKey\r\n };\r\n let searchRequestString = toQueryStringParam(request);\r\n\r\n console.log('search',request);\r\n return this.http.get(`api/search?params=${searchRequestString}`);\r\n }\r\n\r\n onFormSubmit(): boolean {\r\n return false;\r\n }\r\n\r\n clearSearch(): void {\r\n this.phrase.nativeElement.value = '';\r\n this.suggestVisible = false;\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClickOut(ev: any): void {\r\n const $target = $(ev.target);\r\n\r\n if ($target.closest('cmp-flex-suggest').length === 0 && $target.closest('.search-toggle').length === 0) {\r\n this.clearSearch();\r\n this.dataSvc.searchShow(false);\r\n }\r\n }\r\n\r\n queryHide(): void {\r\n this.clearSearch();\r\n }\r\n\r\n queryForce(phrase: string): void {\r\n this.clearSearch();\r\n this.phrase.nativeElement.value = phrase;\r\n this.search(phrase);\r\n }\r\n\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n
","\r\n/**\r\n * Re-Created by jiri.kopel on 06.03.2019.\r\n */\r\n\r\nimport {FlexSuggestComponent} from \"./flex-suggest.component\";\r\nimport {FlexSuggestListComponent} from \"./flex-suggest-list.component\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {NgModule} from \"@angular/core\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {UiDirectivesModule} from \"../../directives/ui-directives.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ArticleListModule} from \"../articles/article-list.module\";\r\nimport {CategoryListModule} from \"../category-list/category-list.module\";\r\nimport {ProductListModule} from \"../product-list/product-list.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n ImageCacheBustModule,\r\n UiDirectivesModule,\r\n CustomPipesModule,\r\n ArticleListModule,\r\n CategoryListModule,\r\n ProductListModule\r\n ],\r\n declarations: [FlexSuggestComponent, FlexSuggestListComponent],\r\n exports: [FlexSuggestComponent, FlexSuggestListComponent]\r\n})\r\n\r\nexport class FlexSuggestModule {}\r\n","import {Translatable} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {AfterViewInit, Component, HostListener, Injector, ViewEncapsulation} from \"@angular/core\";\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {Subject} from \"rxjs\";\r\nimport {finalize, takeUntil} from \"rxjs/operators\";\r\nimport {ForgottenPasswordRequestCore} from \"./common\";\r\nimport {FlexCaptchaService} from \"../../services/flex-captcha.service\";\r\n\r\n@Component({\r\n templateUrl: './forgotten-password-form.html',\r\n selector: 'cmp-forgotten-password-form',\r\n styleUrls: ['../../assets/styles/2-components/user-panel.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ForgottenPasswordFormComponent extends Translatable implements AfterViewInit {\r\n\r\n fpForm: FormGroup;\r\n private readonly mailPat: RegExp;\r\n\r\n mailSent: boolean = false;\r\n msgErr: string;\r\n isBadMail: boolean = false;\r\n trySend: boolean = false;\r\n timeout: any;\r\n private captchaSvcLoaded: boolean = false;\r\n private fcSvc: FlexCaptchaService;\r\n captchaFailed: boolean = false;\r\n displayForm: boolean = true;\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private fb: FormBuilder, public http: HttpClient,\r\n private injector: Injector) {\r\n super(dataSvc, seSvc);\r\n\r\n this.mailPat = this.seSvc.settings.validationPatterns.email;\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.dataSvc.showForgottenPasswordForm) {\r\n try {\r\n let el: HTMLInputElement = document.querySelector('#fp_email');\r\n if (el) {\r\n el.focus();\r\n }\r\n } catch {\r\n }\r\n }\r\n }\r\n\r\n checkCaptchaLoaded():void{\r\n if (!this.captchaSvcLoaded) {\r\n this.captchaSvcLoaded = true;\r\n this.fcSvc = this.injector.get(FlexCaptchaService);\r\n }\r\n }\r\n\r\n createForm(): void {\r\n this.fpForm = this.fb.group({\r\n userName: ['', [Validators.required, Validators.pattern(this.mailPat)]]\r\n });\r\n this.fpForm.valueChanges\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.isBadMail = false;\r\n this.msgErr = null;\r\n if (this.timeout) clearTimeout(this.timeout);\r\n })\r\n }\r\n\r\n executeCaptcha(): void {\r\n this.trySend = true;\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.checkCaptchaLoaded();\r\n this.fcSvc.executeCaptcha('forgotten_pwd', 'forgotten-password.component.onCaptchaExecuted')\r\n .subscribe(res => {\r\n this.captchaFailed = !res.success;\r\n this.sendRequest(res.secret);\r\n })\r\n }\r\n\r\n sendRequest(secret: string): void {\r\n this.dataSvc.dataLoading = true;\r\n this.msgErr = null;\r\n\r\n let userNameField = this.fpForm.get('userName');\r\n if (!userNameField.valid) {\r\n return;\r\n }\r\n const request: ForgottenPasswordRequestCore = {\r\n userName: userNameField.value\r\n };\r\n\r\n const headers = new HttpHeaders({'Captcha-Secret': secret});\r\n\r\n this.http.post('api/forgotten-password/request', request, {headers: headers})\r\n .pipe(\r\n takeUntil(this.ngUnsubscribe),\r\n finalize(() => this.dataSvc.dataLoading = false)\r\n )\r\n .subscribe(res => {\r\n if (res > 0) {\r\n this.displayForm = false;\r\n this.mailSent = true;\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.mailSent = false;\r\n this.dataSvc.showForgottenPasswordForm = false;\r\n }, 3000)\r\n } else {\r\n this.handleMessage(res);\r\n }\r\n });\r\n }\r\n\r\n private handleMessage(res: number): void {\r\n switch (res) {\r\n case -1:\r\n this.isBadMail = true;\r\n break;\r\n case -2:\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.msgErr = this.sen['forgotten-password-mail-notexists'];\r\n this.timeout = setTimeout(() => {\r\n this.msgErr = null;\r\n }, 3000)\r\n break;\r\n case 0:\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.msgErr = this.sen['forgotten-password-mail-error'];\r\n this.timeout = setTimeout(() => {\r\n this.msgErr = null;\r\n }, 3000)\r\n break;\r\n }\r\n\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (evt.key === 'Escape') {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n handleClick(evt: MouseEvent) {\r\n if (this.dataSvc.showForgottenPasswordForm) {\r\n let clickEl: HTMLElement = evt.target;\r\n if (clickEl && !clickEl.closest('cmp-forgotten-password-form')) {\r\n this.close();\r\n }\r\n }\r\n }\r\n\r\n private close():void{\r\n this.fpForm.reset();\r\n this.dataSvc.showForgottenPasswordForm = false;\r\n }\r\n\r\n onFormInputFocus(): void {\r\n this.checkCaptchaLoaded();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n {{sen['forgotten-password-title']}}\r\n
\r\n\r\n
\r\n {{sen['forgotten-password-text']}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n {{sen['login-info-title1']}}\r\n

\r\n\r\n
\r\n {{sen['login-info-title2']}}\r\n
\r\n\r\n
    \r\n \r\n
  • \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n {{sen['login-info-list-' + i]}}\r\n
  • \r\n
    \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n","import {RouterModule} from \"@angular/router\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {NgModule} from \"@angular/core\";\r\nimport {ValidationModule} from \"../validation/validation.module\";\r\nimport {AlertModule} from \"../alert/alert.module\";\r\nimport {ForgottenPasswordFormComponent} from \"./forgotten-password-form.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n ValidationModule,\r\n AlertModule\r\n ],\r\n declarations: [\r\n ForgottenPasswordFormComponent\r\n ],\r\n exports: [\r\n ForgottenPasswordFormComponent\r\n ]\r\n})\r\n\r\nexport class ForgottenPasswordFormModule {\r\n}\r\n\r\n\r\n","import {InjectFlags, InjectionToken, Injector, Type} from \"@angular/core\";\r\nimport {Observable, Subject} from \"rxjs\";\r\n\r\nexport class GeneralDialogInjector implements Injector {\r\n constructor(\r\n private _parentInjector: Injector,\r\n private _additionalTokens: WeakMap\r\n ) {}\r\n\r\n get(\r\n token: Type | InjectionToken,\r\n notFoundValue?: T,\r\n flags?: InjectFlags\r\n ): T;\r\n get(token: any, notFoundValue?: any):any;\r\n get(token: any, notFoundValue?: any, flags?: any) {\r\n if(flags){}//to prevent \"'flags' is declared but its value is never read\" error\r\n \r\n const value = this._additionalTokens.get(token);\r\n const parent = this._parentInjector.get(token, notFoundValue);\r\n\r\n if (value) return value;\r\n\r\n return parent;\r\n }\r\n}\r\n\r\nexport class GeneralDialogRef {\r\n\r\n constructor() {}\r\n\r\n close(result?: any) {\r\n this._afterClosed.next(result);\r\n }\r\n\r\n private readonly _afterClosed = new Subject();\r\n afterClosed: Observable = this._afterClosed.asObservable();\r\n}\r\n","export class GeneralDialogConfig {\r\n data: D; //can be null\r\n cssClassModifier: string; //can be null\r\n isCloseAble: boolean = true; //determines if closing cross is displayed and if an overlay click closes the modal\r\n title: string; //can be null\r\n\r\n public static get Empty(): GeneralDialogConfig {\r\n const ret: GeneralDialogConfig = {\r\n data: null,\r\n cssClassModifier: null,\r\n isCloseAble: true,\r\n title: null\r\n };\r\n return ret;\r\n }\r\n}\r\n","import {Directive, ViewContainerRef} from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[generalDialogInsertion]',\r\n})\r\nexport class GeneralDialogInsertionDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {\r\n\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n OnDestroy,\r\n Type,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {Subject} from \"rxjs\";\r\nimport {GeneralDialogInsertionDirective} from \"./general-dialog-insertion.directive\";\r\nimport {GeneralDialogRef} from \"./common\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-general-dialog',\r\n templateUrl: '../../tpl/general-dialog.html',\r\n styleUrls: ['../../assets/styles/2-components/modal-window.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\n\r\nexport class GeneralDialogComponent implements AfterViewInit, OnDestroy {\r\n public componentRef: ComponentRef;\r\n\r\n @ViewChild(GeneralDialogInsertionDirective, { static: true })\r\n insertionPoint: GeneralDialogInsertionDirective;\r\n\r\n private readonly _onClose = new Subject();\r\n public onClose = this._onClose.asObservable();\r\n\r\n public childComponentType: Type;\r\n\r\n cssClassModifier: string;\r\n title: string;\r\n isCloseAble: boolean;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private cd: ChangeDetectorRef, private dialogRef: GeneralDialogRef) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.loadChildComponent(this.childComponentType);\r\n this.cd.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // this.ngUnsubscribe.next();\r\n // this.ngUnsubscribe.complete();\r\n if (this.componentRef) {\r\n this.componentRef.destroy();\r\n }\r\n }\r\n\r\n loadChildComponent(componentType: Type) {\r\n let componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentType);\r\n\r\n let viewContainerRef = this.insertionPoint.viewContainerRef;\r\n viewContainerRef.clear();\r\n\r\n this.componentRef = viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n\r\n onOverlayClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n this.dialogRef.close();\r\n }\r\n\r\n onDialogClicked(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n }\r\n\r\n closeDialog() {\r\n this.dialogRef.close(null);\r\n }\r\n}\r\n\r\n","
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n {{title}}\r\n
\r\n\r\n \r\n
\r\n
\r\n","import {ApplicationRef, ComponentFactoryResolver, Injector, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {GeneralDialogComponent} from \"./general-dialog.component\";\r\nimport {GeneralDialogInsertionDirective} from \"./general-dialog-insertion.directive\";\r\nimport {GeneralDialogService} from \"./general-dialog.service\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [GeneralDialogComponent, GeneralDialogInsertionDirective],\r\n providers: [\r\n {\r\n provide: GeneralDialogService,\r\n useClass: GeneralDialogService,\r\n deps: [ComponentFactoryResolver, ApplicationRef, Injector]\r\n }\r\n ]\r\n})\r\n\r\nexport class GeneralDialogModule {\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n EmbeddedViewRef,\r\n Injectable,\r\n Injector, Type\r\n} from \"@angular/core\";\r\nimport {GeneralDialogComponent} from \"./general-dialog.component\";\r\nimport {GeneralDialogInjector, GeneralDialogRef} from \"./common\";\r\nimport {GeneralDialogConfig} from \"./general-dialog-config\";\r\n\r\n@Injectable()\r\nexport class GeneralDialogService {\r\n dialogComponentRef: ComponentRef;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector\r\n ) {\r\n }\r\n\r\n private appendDialogComponentToBody(config: GeneralDialogConfig): GeneralDialogRef {\r\n const map = new WeakMap();\r\n map.set(GeneralDialogConfig, config);\r\n\r\n const dialogRef = new GeneralDialogRef();\r\n map.set(GeneralDialogRef, dialogRef);\r\n\r\n const sub = dialogRef.afterClosed.subscribe(() => {\r\n // close the dialog\r\n this.removeDialogComponentFromBody();\r\n sub.unsubscribe();\r\n });\r\n\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(GeneralDialogComponent);\r\n const componentRef = componentFactory.create(new GeneralDialogInjector(this.injector, map));\r\n\r\n if(config && config.cssClassModifier){\r\n componentRef.instance.cssClassModifier = config.cssClassModifier;\r\n }\r\n if(config && config.title){\r\n componentRef.instance.title = config.title;\r\n componentRef.instance.isCloseAble = config.isCloseAble;\r\n }\r\n\r\n this.appRef.attachView(componentRef.hostView);\r\n const domElem = (componentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n this.dialogComponentRef = componentRef;\r\n\r\n this.dialogComponentRef.instance.onClose.subscribe(() => {\r\n this.removeDialogComponentFromBody();\r\n });\r\n\r\n return dialogRef;\r\n }\r\n\r\n private removeDialogComponentFromBody() {\r\n this.appRef.detachView(this.dialogComponentRef.hostView);\r\n this.dialogComponentRef.destroy();\r\n }\r\n\r\n public open(componentType: Type, config: GeneralDialogConfig): GeneralDialogRef {\r\n if (!config) {\r\n config = GeneralDialogConfig.Empty;\r\n }\r\n const dialogRef = this.appendDialogComponentToBody(config);\r\n\r\n this.dialogComponentRef.instance.childComponentType = componentType;\r\n\r\n return dialogRef;\r\n }\r\n\r\n public close(): void {\r\n this.removeDialogComponentFromBody();\r\n }\r\n}\r\n","import {InjectionToken} from \"@angular/core\";\r\nimport {IGoogleMapSettings} from \"./IGoogleMapSettings\";\r\n\r\nexport const GoogleMapSettings = new InjectionToken('GoogleMapSettings');","/**\r\n * Created by petr.humplik on 20.06.2017.\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {LastComponent} from \"./last.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [LastComponent],\r\n exports: [LastComponent]\r\n})\r\n\r\nexport class HelperComponentsModule {}\r\n","/**\r\n * This component can be used to detect the end of *ngFor iteration.\r\n * See it in action in {@link ProductDetailComponent}\r\n */\r\nimport {Component, EventEmitter, OnInit, Output} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cmp-last',\r\n template: ''\r\n})\r\n\r\nexport class LastComponent implements OnInit {\r\n\r\n @Output() initiated: EventEmitter;\r\n\r\n constructor () {\r\n this.initiated = new EventEmitter()\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initiated.emit()\r\n }\r\n}","import {Component, EventEmitter, Input, Output, ViewEncapsulation} from '@angular/core';\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Innovation} from \"./common\";\r\n\r\n@Component({\r\n selector: 'cmp-innovation',\r\n templateUrl: './innovation.html',\r\n styleUrls: ['../../assets/styles/2-components/innovation.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class InnovationComponent extends Translatable {\r\n\r\n @Input() pageSize: number = 0;\r\n @Output() onNoDataLoaded: EventEmitter = new EventEmitter();\r\n\r\n items: Innovation[];\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private http: HttpClient) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getData(): void {\r\n this.http.get(`api/innovation/list/${this.pageSize}`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(res => {\r\n this.items = res;\r\n if (this.items) {\r\n } else {\r\n this.onNoDataLoaded.emit();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","
0\">\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \"{{item.imageTitle}}\"\r\n \r\n\r\n
\r\n
\r\n {{item.btnText}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {InnovationComponent} from \"./innovation.component\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CustomPipesModule,\r\n ImageCacheBustModule,\r\n RouterModule\r\n ],\r\n declarations: [InnovationComponent],\r\n exports: [InnovationComponent]\r\n})\r\n\r\nexport class InnovationModule {\r\n}","import {ArticleBriefSelector, Option, PagedResponse, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation} from \"@angular/core\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Subject} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {SharedAppSettings} from \"../../shared-settings/shared-settings\";\r\nimport {ArticlePageRequest} from \"../inspiration/common\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-inspiration-box',\r\n templateUrl: './inspiration-box.html',\r\n styleUrls: ['../../assets/styles/2-components/article-panel.scss', '../../assets/styles/2-components/article-list.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class InspirationBoxComponent extends Translatable implements OnChanges {\r\n\r\n @Input() classModificator: string;\r\n @Input() categoryId: number;\r\n @Input() productVariantKey: number;\r\n @Input() productCategoryId: number;\r\n @Input() pageSize: number = 3;\r\n @Input() categoryCount: number = 5;\r\n @Input() paramCode: string = 'segment';\r\n\r\n @Output() onDataLoaded: EventEmitter = new EventEmitter();\r\n\r\n rootArticle: ArticleBriefSelector;\r\n articles: ArticleBriefSelector[];\r\n categories: Option[]\r\n\r\n imagePathPrefix: string;\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private http: HttpClient, private sapSvc: SharedAppSettings) {\r\n super(dataSvc, seSvc);\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getOtherData();\r\n }\r\n\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n this.getData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getOtherData(): void {\r\n this.http.get(`api/article/get-by-code/${this.sapSvc.Defaults.InspirationArticleCode}`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.rootArticle = res;\r\n this.onDataLoaded.emit(res?.childArticles?.length > 0);\r\n if (this.rootArticle) this.getData();\r\n }, () => {\r\n this.onDataLoaded.emit(false);\r\n });\r\n\r\n if(this.categoryCount>0) {\r\n /*this.http.get(`api/article/get-params/${this.sapSvc.Defaults.InspirationArticleCode}/segment`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.categories = res ? this.categoryCount ? res.slice(0, this.categoryCount) : res : [];\r\n });*/\r\n }\r\n }\r\n\r\n getData(): void {\r\n if (!this.rootArticle || !(this.rootArticle?.childArticles?.length > 0)) return;\r\n\r\n const req: ArticlePageRequest = {\r\n code: this.sapSvc.Defaults.InspirationArticleCode,\r\n pageIndex: 0,\r\n pageSize: this.pageSize,\r\n allPages: false,\r\n categories: this.categoryId ? [this.categoryId] : [],\r\n productCategoryId: this.productCategoryId,\r\n productVariantKey: this.productVariantKey,\r\n paramCode: this.paramCode\r\n };\r\n\r\n this.http.post>(`api/article/list-children-cat-code`, req)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n if (res) {\r\n if (res.data) {\r\n res.data.forEach(a => {\r\n a.seoUrl = a.seoUrl.replace(/^\\/article\\//, '/inspiration/')\r\n })\r\n }\r\n this.articles = res.data;\r\n }\r\n });\r\n }\r\n\r\n categoryChanged(catId: number): void {\r\n this.categoryId = catId != this.categoryId ? catId : null;\r\n this.getData();\r\n }\r\n\r\n isSelected(id: number): boolean {\r\n return this.categoryId == id;\r\n }\r\n\r\n\r\n}","
0\">\r\n
\r\n

\r\n {{sen['inspiration-box-title']}}\r\n

\r\n\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {BreadcrumbsModule} from \"../breadcrumbs/breadcrumbs.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {HelperComponentsModule} from \"../helper-components/helper-components.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {FlexPaginationModule} from \"../pagination/pagination.module\";\r\nimport {InspirationBoxComponent} from \"./inspiration-box.component\";\r\nimport {ArticleListModule} from \"../articles/article-list.module\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n BreadcrumbsModule,\r\n CustomPipesModule,\r\n CommonModule,\r\n FormsModule,\r\n HelperComponentsModule,\r\n ImageCacheBustModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n FlexPaginationModule,\r\n ArticleListModule\r\n ],\r\n exports: [\r\n InspirationBoxComponent\r\n ],\r\n declarations: [\r\n InspirationBoxComponent\r\n ]\r\n})\r\n\r\nexport class InspirationModule {\r\n}\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {LandingPageSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {LandingPageService} from \"../../services/landing-page.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Params} from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'cmp-available-landing-pages',\r\n templateUrl: './available-landing-pages.html',\r\n styleUrls: ['../../assets/styles/4-routes/category.scss', './styles.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class AvailableLandingPagesComponent extends Translatable {\r\n\r\n availableLandingPages: Array = null;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private landingPageSvc: LandingPageService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.landingPageSvc.urlRelatedLandingPages\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n if (!res) {\r\n this.availableLandingPages = null;\r\n }\r\n\r\n this.availableLandingPages = res?.map((lp) => {\r\n return JSON.parse(JSON.stringify(lp)); //pozdeji se upravuji lp.systemUrl, tak at se nemeni na originalnich objektech\r\n });\r\n this.modifySystemUrls();\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.ngUnsubscribe) {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n }\r\n\r\n modifySystemUrls(): void {\r\n if (!this.availableLandingPages || !this.availableLandingPages.length) {\r\n return;\r\n }\r\n const server = `${location.protocol}//${location.host}`;\r\n\r\n this.availableLandingPages.forEach((lp) => {\r\n if (lp.systemUrl.startsWith(server)) {\r\n lp.systemUrl = lp.systemUrl.substr(server.length);\r\n }\r\n });\r\n }\r\n\r\n getRoute(landingPage: LandingPageSelector) {\r\n const server = `${location.protocol}//${location.host}`;\r\n const url = landingPage.systemUrl.split('#')[0].split('?')[0];\r\n\r\n if (url.startsWith(server)) {\r\n return url.substr(server.length);\r\n }\r\n\r\n return url;\r\n }\r\n\r\n getQueryParams(landingPage: LandingPageSelector): Params {\r\n const ret: Params = {lanpag: landingPage.id};\r\n const qs = landingPage.systemUrl.split('?')[1]?.split('#')[0];\r\n\r\n if (!qs) {\r\n return ret;\r\n }\r\n\r\n\r\n const splittedPairs = qs.split('&');\r\n for (let i = 0; i < splittedPairs.length; i++) {\r\n const pair = splittedPairs[i];\r\n if (pair?.indexOf('=') > 0) {\r\n const splittedPair = pair.split('=');\r\n const name = splittedPair[0];\r\n const value = splittedPair[1];\r\n\r\n if (!ret[name]) {\r\n ret[name] = value;\r\n continue;\r\n }\r\n\r\n const existing = ret[name];\r\n if (Array.isArray(existing)) {\r\n ret[name].push(value);\r\n } else {\r\n ret[name] = [ret[name], value];\r\n }\r\n }\r\n }\r\n\r\n\r\n return ret;\r\n }\r\n}","\r\n {{landingPage.title}}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {AvailableLandingPagesComponent} from \"./available-landing-pages.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule\r\n ],\r\n declarations: [AvailableLandingPagesComponent],\r\n exports: [AvailableLandingPagesComponent]\r\n})\r\n\r\nexport class AvailableLandingPagesModule {\r\n}","import {Component, Injector} from \"@angular/core\";\r\nimport {LoginEmitterMessage, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {GeneralDialogRef} from \"../general-dialog/common\";\r\nimport {DigestService} from \"../../services/digest.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {take, takeUntil} from \"rxjs/operators\";\r\nimport {FlexCaptchaService} from \"../../services/flex-captcha.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Component({\r\n templateUrl: '../../tpl/login-dialog.html'\r\n})\r\n\r\nexport class LoginDialogComponent extends Translatable {\r\n\r\n userForm: FormGroup;\r\n mailPattern: RegExp;\r\n activated: boolean = false;\r\n isError: boolean = false;\r\n captchaFailed: boolean = false;\r\n private captchaSvcLoaded: boolean = false;\r\n private fcSvc: FlexCaptchaService;\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private digestSvc: DigestService,\r\n private fb: FormBuilder, private dialogRef: GeneralDialogRef,\r\n private injector: Injector, private http: HttpClient) {\r\n super(dataSvc, seSvc);\r\n\r\n this.mailPattern = this.seSvc.settings.validationPatterns.email;\r\n\r\n this.digestSvc.loginStatus\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res: LoginEmitterMessage) => {\r\n if (res && res.data && res.data.error && res.data.error.toString() === 'NOT_ACTIVATED') {\r\n this.activated = false;\r\n this.isError = true;\r\n this.dataSvc.dataLoading = false;\r\n this.sendActivationMail();\r\n } else if (res && res.type == this.digestSvc.errorType && res.message == this.digestSvc.badCredentialsMessage) {\r\n this.activated = true;\r\n this.dataSvc.dataLoading = false;\r\n this.isError = true;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createForm();\r\n }\r\n onFormInputFocus(): void {\r\n this.checkCaptchaLoaded();\r\n }\r\n\r\n checkCaptchaLoaded():void{\r\n if (!this.captchaSvcLoaded) {\r\n this.captchaSvcLoaded = true;\r\n this.fcSvc = this.injector.get(FlexCaptchaService);\r\n }\r\n }\r\n\r\n executeCaptcha(): void {\r\n this.checkCaptchaLoaded();\r\n\r\n this.fcSvc.executeCaptcha('login', 'login-dialog.component.onCaptchaExecuted')\r\n .subscribe(res => {\r\n this.captchaFailed = !res.success;\r\n if (res.success) {\r\n this.login(res.secret);\r\n }\r\n })\r\n }\r\n\r\n login(secret: string) {\r\n this.dataSvc.dataLoading = true;\r\n this.digestSvc.login(this.userForm.get('userName').value, this.userForm.get('password').value, secret);\r\n }\r\n\r\n private createForm(): void {\r\n this.userForm = this.fb.group({\r\n userName: ['', [Validators.required, Validators.minLength(4), Validators.pattern(this.mailPattern)]],\r\n password: ['', [Validators.required, Validators.minLength(4)]]\r\n })\r\n }\r\n\r\n onKey(evt: KeyboardEvent): void {\r\n this.isError = false;\r\n if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n if (this.userForm.valid) {\r\n this.executeCaptcha();\r\n }\r\n }\r\n }\r\n\r\n closeDialog() {\r\n this.dialogRef.close();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private sendActivationMail(): void {\r\n this.http.post('api/registration/send-registration-mail', {anyString: this.userForm.get('userName').value})\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n {{sen['login-register']}}\r\n \r\n
\r\n
\r\n","import {AfterViewInit, Component, EventEmitter, HostListener, Injector, Input, Output, ViewEncapsulation} from '@angular/core';\r\nimport {DigestService} from \"../../services/digest.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {LoginEmitterMessage, Translatable} from \"../../interfaces/general\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\nimport {UserConfigSelector} from \"./common\";\r\nimport {FlexCaptchaService} from \"../../services/flex-captcha.service\";\r\n\r\n\r\ndeclare let sha256: any;\r\n\r\n@Component({\r\n selector: 'cmp-login-form',\r\n templateUrl: '../../tpl/login-form.html',\r\n styleUrls: ['../../assets/styles/2-components/user-panel.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class LoginFormComponent extends Translatable implements AfterViewInit {\r\n\r\n @Input() classModificator: string;\r\n @Output() onClosed: EventEmitter = new EventEmitter();\r\n\r\n userForm: FormGroup;\r\n mailPattern: RegExp;\r\n\r\n isError: boolean = false;\r\n isBadLogin: boolean = false;\r\n captchaFailed: boolean = false;\r\n addErrorNote: string | SafeHtml;\r\n loginClick: boolean = false;\r\n checkEmail: boolean = false;\r\n termsAndConditionsUrl: string;\r\n private captchaSvcLoaded: boolean = false;\r\n private fcSvc: FlexCaptchaService;\r\n\r\n userConfig: UserConfigSelector;\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private digestSvc: DigestService, private injector: Injector,\r\n private fb: FormBuilder, private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n\r\n this.mailPattern = this.seSvc.settings.validationPatterns.email;\r\n this.termsAndConditionsUrl = this.seSvc.settings.termsAndConditions[this.seSvc.culture.cultureId].termsUrl;\r\n\r\n this.digestSvc.loginStatus\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res: LoginEmitterMessage) => {\r\n if (res && res.data && res.data.error && !res.data.ok) {\r\n this.isError = true;\r\n this.dataSvc.dataLoading = false;\r\n\r\n if (res.data.error.toString() === 'EMAIL_INVALID') {\r\n this.isBadLogin = true;\r\n // } else if (res.data.error.toString() === 'NOT_ACTIVATED') {\r\n // this.isBadLogin = false;\r\n } else if (res.type == this.digestSvc.errorType && res.message == this.digestSvc.badCredentialsMessage) {\r\n this.isBadLogin = false;\r\n }\r\n }\r\n });\r\n\r\n this.createForm();\r\n }\r\n\r\n onFormInputFocus(): void {\r\n this.checkCaptchaLoaded();\r\n }\r\n\r\n checkCaptchaLoaded():void{\r\n if (!this.captchaSvcLoaded) {\r\n this.captchaSvcLoaded = true;\r\n this.fcSvc = this.injector.get(FlexCaptchaService);\r\n }\r\n }\r\n\r\n // temporary REMOVED due to coding\r\n @HostListener('document:mouseup', ['$event'])\r\n handleClick(evt: MouseEvent) {\r\n if (this.dataSvc.showLoginForm) {\r\n let clickEl: HTMLElement = evt.target;\r\n if (clickEl && !clickEl.closest(`${this.classModificator}, cmp-login-form`)) {\r\n this.close();\r\n }\r\n }\r\n }\r\n\r\n private createForm(): void {\r\n this.userForm = this.fb.group({\r\n userName: ['', [Validators.required, Validators.minLength(4), Validators.pattern(this.mailPattern)]],\r\n password: ['', [Validators.required, Validators.minLength(4)]]\r\n })\r\n }\r\n\r\n onKey(evt: KeyboardEvent): void {\r\n this.isError = false;\r\n this.isBadLogin = false;\r\n this.addErrorNote = null;\r\n\r\n if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n if (this.userForm.valid) {\r\n this.executeCaptcha();\r\n }\r\n }\r\n }\r\n\r\n onLoginBlur(): void {\r\n setTimeout(() => {\r\n this.checkEmail = true;\r\n }, 300);\r\n this.isBadLogin = false;\r\n }\r\n\r\n executeCaptcha(): void {\r\n this.checkCaptchaLoaded();\r\n this.fcSvc.executeCaptcha('login', 'login-form.component.onCaptchaExecuted')\r\n .subscribe(res => {\r\n this.captchaFailed = !res.success;\r\n if (res.success) {\r\n this.onLoginClick(res.secret);\r\n }\r\n })\r\n }\r\n\r\n onLoginClick(secret: string): void {\r\n this.loginClick = true;\r\n if (this.userForm.invalid) return;\r\n\r\n this.digestSvc.login(this.userForm.get('userName').value, sha256(this.userForm.get('password').value), secret);\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (evt.key === 'Escape') {\r\n this.close();\r\n }\r\n }\r\n\r\n fpClick(): void {\r\n this.close();\r\n this.dataSvc.showForgottenPasswordForm = true;\r\n }\r\n\r\n /*loginFormClick(): void {\r\n this.close();\r\n }*/\r\n\r\n reset(): void {\r\n this.userForm.reset();\r\n this.isError = false;\r\n this.isBadLogin = false;\r\n };\r\n\r\n ngAfterViewInit(): void {\r\n if (this.dataSvc.showLoginForm) {\r\n try {\r\n let el: HTMLInputElement = document.querySelector('#login');\r\n if (el) {\r\n el.focus();\r\n }\r\n } catch {\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private close(): void {\r\n this.dataSvc.showLoginForm = false;\r\n this.onClosed.emit();\r\n this.reset();\r\n this.checkEmail = false;\r\n this.isBadLogin = false;\r\n this.loginClick = false;\r\n }\r\n\r\n get HDlink(): SafeHtml {\r\n let msg: string = this.sen['log-helpdesk-note'];\r\n if (this.userConfig && this.userConfig.helpDeskEmail) {\r\n msg = msg.replace('[#A#]', ``).replace('[#/A#]', '');\r\n } else {\r\n msg = msg.replace('[#A#]', '').replace('[#/A#]', '');\r\n }\r\n return this.sanitizer.bypassSecurityTrustHtml(msg);\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n {{sen['login-forgot-password']}}\r\n \r\n\r\n
\r\n {{sen['login-terms-pre']}}\r\n\r\n \r\n {{sen['login-terms-link']}}\r\n \r\n\r\n {{sen['login-terms-post']}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n {{sen['login-info-title1']}}\r\n

\r\n\r\n
\r\n {{sen['login-info-title2']}}\r\n
\r\n\r\n
    \r\n \r\n
  • \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n {{sen['login-info-list-' + i]}}\r\n
  • \r\n
    \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
","/**\r\n * @description\r\n * Provides functionality for logging user in and out\r\n * The template of this component is the place to place Login Control GUI\r\n * In case of a need to implement custome validators, look here:\r\n * https://angular.io/docs/ts/latest/cookbook/form-validation.html#!#custom-validation\r\n */\r\nimport {Component, ViewEncapsulation} from '@angular/core';\r\nimport {DigestService} from \"../../services/digest.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {NavigationStart, Router} from \"@angular/router\";\r\nimport {isRouteSecured} from \"../../helpers/string.helper\";\r\nimport {Subject} from \"rxjs\";\r\nimport {filter, takeUntil} from \"rxjs/operators\";\r\nimport {CredentialStorage} from \"../../services/credential-storage.service\";\r\nimport {AuthInfo, LoginEmitterMessage, Translatable} from \"../../interfaces/general\";\r\nimport {GeneralDialogService} from \"../general-dialog/general-dialog.service\";\r\nimport {LoginDialogComponent} from \"./login-dialog.component\";\r\nimport {GeneralDialogConfig} from \"../general-dialog/general-dialog-config\";\r\nimport {IntegrationService} from \"../../interceptors/integration.service\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-login',\r\n templateUrl: '../../tpl/login.html',\r\n styleUrls: ['../../assets/styles/3-layout/header/user.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class LoginComponent extends Translatable {\r\n\r\n displayUser: string;\r\n loggedIn: boolean = false;\r\n errorMessage: string;\r\n\r\n showUserMenuDialog: boolean = false;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n public digestSvc: DigestService, private router: Router,\r\n private generalDialogSvc: GeneralDialogService,\r\n private iSvc: IntegrationService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.digestSvc.onLoginQuery\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.toogleLoginForm(null, true);\r\n });\r\n\r\n /*let ai: AuthInfo = CredentialStorage.authInfo;\r\n if (ai) {\r\n this.loggedIn = ai.loggedIn;\r\n if (this.loggedIn) this.displayUser = ai.displayName;\r\n }*/\r\n\r\n this.iSvc.anyCall\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.loggedIn = this.userLoggedIn;\r\n if (this.loggedIn) this.displayUser = this.displayName;\r\n })\r\n\r\n this.digestSvc.loginStatus\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res: LoginEmitterMessage) => {\r\n if (res.type === 'error') this.errorMessage = this.sen['login-error'];\r\n else this.errorMessage = null;\r\n });\r\n }\r\n\r\n /**\r\n * @description\r\n * Logs user off by deleting Authorization header info from session / local\r\n * You can optionally show a message\r\n */\r\n logOut(): void {\r\n this.digestSvc.logOut(true);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.router.events\r\n .pipe(\r\n filter(f => f instanceof NavigationStart),\r\n takeUntil(this.ngUnsubscribe)\r\n )\r\n .subscribe((res: NavigationStart) => {\r\n if (!isRouteSecured(res.url)) return;\r\n\r\n let ai: AuthInfo = CredentialStorage.authInfo;\r\n if (ai && !/^\\/odhlaseni$/.test(res.url)) {\r\n if (!CredentialStorage.isAiTimeValid()) {\r\n this.digestSvc.logOut();\r\n }\r\n }\r\n })\r\n }\r\n\r\n toogleLoginForm(_ev: MouseEvent, bln?: boolean): void {\r\n if (bln != undefined) {\r\n this.dataSvc.showLoginForm = bln\r\n } else {\r\n this.dataSvc.showLoginForm = !this.dataSvc.showLoginForm;\r\n }\r\n }\r\n\r\n toogleUserMenuDialog(_ev: MouseEvent, bln?: boolean): void {\r\n if(this.showUserMenuDialog){\r\n const firstStep = '/account';\r\n this.router.navigateByUrl(firstStep).then(() => {\r\n this.showUserMenuDialog = false;\r\n });\r\n return;\r\n }\r\n\r\n if (bln != undefined) {\r\n this.showUserMenuDialog = bln\r\n } else {\r\n this.showUserMenuDialog = !this.showUserMenuDialog;\r\n }\r\n }\r\n\r\n userMenuDialogClicked(stay: boolean): void {\r\n this.showUserMenuDialog = !!stay;\r\n }\r\n\r\n /*not used*/\r\n showDialog(): void {\r\n const config: GeneralDialogConfig = {\r\n data: null,\r\n cssClassModifier: 'login',\r\n isCloseAble: true,\r\n title: this.sen['app-user-login-title']\r\n };\r\n this.generalDialogSvc.open(LoginDialogComponent, config);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n {{sen['app-login']}}\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n {{displayUser}}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
","/**\r\n * Module containing all features related to login:\r\n * - LoginComponent with the form for entering user credentials\r\n * - SignOutComponent - for signing user out\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {LoginComponent} from \"./login.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ValidationModule} from \"../validation/validation.module\";\r\nimport {LoginDialogComponent} from \"./login-dialog.component\";\r\nimport {GeneralDialogModule} from \"../general-dialog/general-dialog.module\";\r\nimport {PreloaderModule} from \"../preloader/preloader.module\";\r\nimport {LoginFormComponent} from \"./login-form.component\";\r\nimport {ForgottenPasswordFormModule} from \"../forgotten-password/forgotten-password-form.module\";\r\nimport {UserMenuDialogComponent} from \"./user-menu-dialog/user-menu-dialog.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n ValidationModule,\r\n GeneralDialogModule,\r\n PreloaderModule,\r\n ForgottenPasswordFormModule\r\n ],\r\n\r\n declarations: [\r\n LoginComponent,\r\n LoginDialogComponent,\r\n LoginFormComponent,\r\n UserMenuDialogComponent\r\n ],\r\n exports: [\r\n LoginComponent,\r\n LoginDialogComponent,\r\n LoginFormComponent,\r\n UserMenuDialogComponent\r\n ]\r\n})\r\n\r\nexport class LoginModule {\r\n}\r\n","import {Component, EventEmitter, HostListener, Output, ViewEncapsulation} from '@angular/core';\r\nimport {Translatable} from \"../../../interfaces/general\";\r\nimport {SettingsService} from \"../../../services/settings.service\";\r\nimport {DataService} from \"../../../services/data.service\";\r\nimport {DigestService} from \"../../../services/digest.service\";\r\nimport {GeneralDialogConfig} from \"../../general-dialog/general-dialog-config\";\r\nimport {GeneralDialogService} from \"../../general-dialog/general-dialog.service\";\r\nimport {ChangePasswordDialogComponent} from \"../../account/dialogs/change-password-dialog.component\";\r\n\r\ndeclare let sha256: any;\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-user-menu-dialog',\r\n templateUrl: './user-menu-dialog.html',\r\n styleUrls: ['../../../assets/styles/2-components/user-panel.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class UserMenuDialogComponent extends Translatable {\r\n\r\n @Output() onClicked: EventEmitter = new EventEmitter()\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private digestSvc: DigestService, private generalDialogSvc: GeneralDialogService\r\n ) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (evt.key === 'Escape') {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClickOut(ev: any): void {\r\n const $target = $(ev.target);\r\n\r\n if ($target.closest('cmp-login').length === 0) {\r\n this.close();\r\n }\r\n }\r\n\r\n showPwdDialogOpen(): void {\r\n const config: GeneralDialogConfig = {\r\n data: null,\r\n cssClassModifier: 'login',\r\n isCloseAble: true,\r\n title: this.sen['change-pwd-modal-title']\r\n };\r\n this.generalDialogSvc.open(ChangePasswordDialogComponent, config);\r\n this.close();\r\n }\r\n\r\n logOut(): void {\r\n this.digestSvc.logOut(true);\r\n this.close();\r\n }\r\n\r\n close(stayOpened?: boolean): void {\r\n this.onClicked.emit(!!stayOpened);\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
    \r\n \r\n
  • \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n {{sen['user-info-list-' + i]}}\r\n
  • \r\n
    \r\n
\r\n
\r\n\r\n
\r\n
\r\n
","/**\r\n * Created by jiri.kopel on 06.03.2019.\r\n */\r\nimport {Component, ElementRef, ViewChild} from \"@angular/core\";\r\nimport {SearchSelector, Translatable, SearchRequest, ProductRequestType} from \"../../interfaces/general\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Subject} from \"rxjs\";\r\nimport {Router} from \"@angular/router\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {SearchService} from \"../../services/search.service\";\r\n\r\ndeclare let $: any;\r\ndeclare let AutoComplete:any;\r\n\r\n@Component({\r\n selector: 'cmp-luigi-suggest',\r\n templateUrl: '../../tpl/luigi-suggest.html'\r\n})\r\nexport class LuigiSuggestComponent extends Translatable {\r\n\r\n @ViewChild('phrase', { static: true }) phrase: ElementRef;\r\n\r\n searchBoxVisible: boolean = false;\r\n suggestVisible: boolean = false;\r\n suggestResult: SearchSelector;\r\n enterFired: Subject = new Subject();\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n trackerId: string;\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private http: HttpClient, private router: Router,\r\n private searchSvc: SearchService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.http.get('api/luigis/settings')\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res: any) => {\r\n this.trackerId = res.TrackerId;\r\n this.initScripts();\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n addEventListener('click', () => {\r\n this.suggestVisible = false;\r\n });\r\n }\r\n\r\n LuigisAutocomplete(): void {\r\n let trackerid = this.trackerId;\r\n AutoComplete({\r\n Layout: 'line',\r\n ShowBranding: true,\r\n TrackerId: trackerid,\r\n Types: [\r\n {\r\n type: 'item',\r\n name: this.sen['luigis-items'],//'Produkty',\r\n size: 8\r\n },\r\n {\r\n type: 'category',\r\n name: this.sen['luigis-category'],//'Kategorie',\r\n size: 6\r\n },\r\n ],\r\n FormatForDisplay: (result: any) => {\r\n let allAttributes = result.attributes;\r\n if (result.type == \"item\") {\r\n allAttributes.price+= \" \"+ allAttributes['currency'];\r\n\r\n }\r\n return result;\r\n\r\n },\r\n Select: (e: MouseEvent, item: any, _row: any) => {\r\n e.preventDefault();\r\n this.router.navigateByUrl(item.url).then(() => {});\r\n return true;\r\n }\r\n }, '#js-search')\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n this.enterFired.complete();\r\n }\r\n\r\n searchKeyUp(evt: KeyboardEvent) {\r\n if (evt.key === 'Escape') {\r\n this.suggestVisible = false;\r\n }\r\n }\r\n\r\n search(phrase: string): void {\r\n if (phrase.length == 0) return;\r\n this.phrase.nativeElement.value = '';\r\n this.suggestVisible = false;\r\n this.router.navigateByUrl(`/search-result?q=${phrase}`).then(() => {});\r\n }\r\n\r\n searchKeyPress(evt: KeyboardEvent, phrase: string): void {\r\n this.searchSvc.fireSearchInputChanged(phrase);\r\n\r\n if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n this.search(phrase);\r\n this.suggestVisible = false;\r\n this.enterFired.next();\r\n return;\r\n }\r\n }\r\n\r\n getSuggest(phrase: string): any {\r\n let request: SearchRequest = {\r\n phrase: decodeURI(phrase),\r\n pageIndex: 1,\r\n pageSize: 5,\r\n requestType: ProductRequestType.Variant\r\n };\r\n return this.http.post(`api/search`, request);\r\n }\r\n\r\n public toggleSearch(): void {\r\n if (!this.searchBoxVisible) {\r\n $('.header__search').show();\r\n this.searchBoxVisible = true;\r\n }\r\n else {\r\n $('.header__search').hide();\r\n this.searchBoxVisible = false;\r\n }\r\n }\r\n\r\n private initScripts(): void {\r\n let analytics = document.createElement('script');\r\n analytics.defer = true;\r\n analytics.src = 'https://cdn.luigisbox.com/netdirect.js';\r\n analytics.setAttribute('data-luigisbox-tracker-id', this.trackerId);\r\n\r\n let style = document.createElement('link');\r\n style.setAttribute('rel', 'stylesheet');\r\n style.href = 'https://cdn.luigisbox.com/autocomplete.css';\r\n\r\n let auto = document.createElement('script');\r\n auto.defer = true;\r\n auto.onload = () => { this.LuigisAutocomplete() };\r\n auto.src = 'https://cdn.luigisbox.com/autocomplete.js';\r\n\r\n document.body.appendChild(analytics);\r\n document.body.appendChild(style);\r\n document.body.appendChild(auto);\r\n\r\n /*\r\n \r\n \r\n \r\n */\r\n }\r\n}","
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n
","\r\n/**\r\n * Re-Created by jiri.kopel on 06.03.2019.\r\n */\r\n\r\nimport {LuigiSuggestComponent} from \"./luigi-suggest.component\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {NgModule} from \"@angular/core\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {UiDirectivesModule} from \"../../directives/ui-directives.module\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n UiDirectivesModule\r\n ],\r\n declarations: [LuigiSuggestComponent],\r\n exports: [LuigiSuggestComponent]\r\n})\r\n\r\nexport class LuigiSuggestModule {}","export enum MenuBehavior {\r\n default = 'default',\r\n openAndFixedOnIndex = 'openAndFixedOnIndex'\r\n}\r\n","import {Component, Input, Renderer2, ViewEncapsulation} from \"@angular/core\";\r\nimport {ArticleBriefSelector, Option, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {filter, takeUntil} from \"rxjs/operators\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Subject} from \"rxjs\";\r\nimport {MenuBehavior} from \"./common\";\r\nimport {MenuService} from \"../../services/menu.service\";\r\nimport {SharedAppSettings} from \"../../shared-settings/shared-settings\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {NavigationEnd, Router} from \"@angular/router\";\r\nimport {Innovation} from \"../innovation/common\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-menu',\r\n templateUrl: '../../tpl/menu.html',\r\n styleUrls: ['../../assets/styles/3-layout/menu.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class MenuComponent extends Translatable {\r\n\r\n @Input() menuBehavior: MenuBehavior = MenuBehavior.default;\r\n\r\n // contactArticle: BreadCrumbInfo;\r\n menuArticle: ArticleBriefSelector;\r\n aboutUsArticle: ArticleBriefSelector;\r\n serviceArticle: ArticleBriefSelector;\r\n newsArticle: ArticleBriefSelector;\r\n inspirationArticle: ArticleBriefSelector;\r\n innovations: Array;\r\n innovationHide: boolean = false;\r\n categoryCount: number = 5;\r\n innovationPageSize: number = 4;\r\n inspirationCategories: Option[];\r\n\r\n timeoutHnd: any;\r\n showMenuDelay: boolean = false;\r\n currentMousePlace: string;\r\n static tomeoutEnter: number = 100;\r\n static tomeoutLeave: number = 500;\r\n\r\n private menuActive: boolean = false;\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n initialized: boolean;\r\n menuImagePathPrefix: string;\r\n\r\n private newsLoaded: boolean = false;\r\n // private aboutUsArticleLoaded: boolean = false;\r\n // private servicesLoaded: boolean = false;\r\n // private inspirationLoaded: boolean = false;\r\n // private inspirationCategoryLoaded: boolean = false;\r\n // private innovationsLoaded: boolean = false;\r\n\r\n private _menu_element: any;\r\n private get menu_element(): any {\r\n if (!this._menu_element) {\r\n //this._menu_element = this.elementRef.nativeElement.querySelector('.menu');\r\n this._menu_element = document.body.querySelector('.menu');\r\n }\r\n\r\n return this._menu_element;\r\n }\r\n\r\n private _responsive_menu_element: any;\r\n private get responsive_menu_element(): any {\r\n if (!this._responsive_menu_element) {\r\n //this._responsive_menu_element = this.elementRef.nativeElement.querySelector('.responsive-menu');\r\n this._responsive_menu_element = document.body.querySelector('.responsive-menu');\r\n }\r\n\r\n return this._responsive_menu_element;\r\n }\r\n\r\n\r\n private _navigation_element: any;\r\n private get navigation_element(): any {\r\n if (!this._navigation_element) {\r\n //this._navigation_element = this.elementRef.nativeElement.querySelector('.navigation');\r\n this._navigation_element = document.body.querySelector('.navigation');\r\n }\r\n\r\n return this._navigation_element;\r\n }\r\n\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private http: HttpClient, private router: Router,/*private elementRef: ElementRef,*/\r\n private renderer: Renderer2, private menuSvc: MenuService, private sapSvc: SharedAppSettings,\r\n public saSvc: SharedAppSettings, private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n this.menuImagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n\r\n this.menuSvc.toggleMenu\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.toggleMenu();\r\n });\r\n\r\n this.menuSvc.hideMenu\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((hide) => {\r\n this.toggleMenu(hide);\r\n });\r\n\r\n this.router.events\r\n .pipe(\r\n filter(res => res instanceof NavigationEnd),\r\n takeUntil(this.ngUnsubscribe)\r\n )\r\n .subscribe(() => {\r\n this.initialized = false;\r\n this.hideMenu();\r\n setTimeout(() => {\r\n this.initialized = true;\r\n }, 100)\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.getContactArticle();\r\n // this.getAboutUsArticle();\r\n // this.getServices();\r\n this.getNews();\r\n // this.getInspiration();\r\n // this.getInnovations();\r\n this.getMenuArticles();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getMenuArticles():void{\r\n this.http.get(`api/article/get-by-code/${this.sapSvc.Defaults.MenuArticleCode}`)\r\n .subscribe((res) => {\r\n this.menuArticle = res;\r\n\r\n if (this.menuArticle) {\r\n if (this.menuArticle.childArticles) {\r\n this.menuArticle.childArticles.forEach(a => {\r\n if (a.annotation) a.annotation = this.sanitizer.bypassSecurityTrustHtml(a.annotation);\r\n })\r\n }\r\n }\r\n });\r\n }\r\n /*getServices(): void {\r\n if (this.servicesLoaded) return;\r\n\r\n this.http.get(`api/article/get-by-code/${this.saSvc.Defaults.ServiceArticleCode}`)\r\n .subscribe((res) => {\r\n this.serviceArticle = res;\r\n\r\n if (this.serviceArticle) {\r\n if (this.serviceArticle.childArticles) {\r\n this.serviceArticle.childArticles.forEach(a => {\r\n if (a.annotation) a.annotation = this.sanitizer.bypassSecurityTrustHtml(a.annotation);\r\n })\r\n }\r\n }\r\n\r\n this.servicesLoaded = true;\r\n });\r\n }*/\r\n\r\n getNews(): void {\r\n if (this.newsLoaded) return;\r\n\r\n this.http.get(`api/article/get-by-code/${this.sapSvc.Defaults.NewsArticleCode}`)\r\n .subscribe((res) => {\r\n this.newsArticle = res;\r\n\r\n if (this.newsArticle) {\r\n if (this.newsArticle.childArticles) {\r\n this.newsArticle.childArticles.forEach(a => {\r\n if (a.annotation) a.annotation = this.sanitizer.bypassSecurityTrustHtml(a.annotation);\r\n if (a.seoUrl) a.seoUrl = a.seoUrl.replace(/^\\/article\\//, '/news/');\r\n })\r\n }\r\n }\r\n\r\n this.newsLoaded = true;\r\n });\r\n }\r\n\r\n /*getInspiration(): void {\r\n if (this.inspirationLoaded && this.inspirationCategoryLoaded) return;\r\n\r\n this.http.get(`api/article/get-by-code/${this.saSvc.Defaults.InspirationArticleCode}/3`)\r\n .subscribe((res) => {\r\n this.inspirationArticle = res;\r\n\r\n if (this.inspirationArticle) {\r\n if (this.inspirationArticle.childArticles) {\r\n this.inspirationArticle.childArticles.forEach(a => {\r\n if (a.annotation) a.annotation = this.sanitizer.bypassSecurityTrustHtml(a.annotation);\r\n a.seoUrl = a.seoUrl.replace(/^\\/article\\//, '/inspiration/');\r\n })\r\n }\r\n }\r\n\r\n this.inspirationLoaded = true;\r\n });\r\n\r\n if (this.categoryCount > 0) {\r\n if (this.inspirationCategoryLoaded) return;\r\n\r\n this.http.get(`api/article/get-params/${this.sapSvc.Defaults.InspirationArticleCode}/segment`)\r\n .subscribe((res) => {\r\n this.inspirationCategories = res ? this.categoryCount ? res.slice(0, this.categoryCount) : res : [];\r\n\r\n this.inspirationCategoryLoaded = true;\r\n });\r\n }\r\n }*/\r\n\r\n /*getContactArticle(): void {\r\n this.http.get(`api/article/breadcrumb/${this.saSvc.Defaults.ContactArticleCode}`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.contactArticle = res;\r\n if (this.contactArticle) {\r\n this.contactArticle.redirectUrl = this.seSvc.getUrl(this.contactArticle.redirectUrl);\r\n }\r\n })\r\n }*/\r\n\r\n /*getAboutUsArticle() {\r\n if (this.aboutUsArticleLoaded) return;\r\n\r\n this.http.get(`api/article/get-by-code/${this.saSvc.Defaults.AboutUsArticleCode}`)\r\n .subscribe((res) => {\r\n this.aboutUsArticle = res;\r\n if (this.aboutUsArticle) {\r\n if (this.aboutUsArticle.childArticles) {\r\n this.aboutUsArticle.childArticles.forEach(a => {\r\n if (a.annotation) a.annotation = this.sanitizer.bypassSecurityTrustHtml(a.annotation);\r\n })\r\n }\r\n }\r\n this.aboutUsArticleLoaded = true;\r\n });\r\n }*/\r\n\r\n /*getInnovations() {\r\n if (this.innovationsLoaded) return;\r\n\r\n this.http.get>(`api/innovation/list/${this.innovationPageSize}`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(res => {\r\n this.innovations = res;\r\n if (this.innovations) {\r\n } else {\r\n this.innovationHide = true;\r\n }\r\n\r\n this.innovationsLoaded = true;\r\n });\r\n }*/\r\n\r\n\r\n onInnovationEmpty(): void {\r\n this.innovationHide = true;\r\n }\r\n\r\n onCategoryEmpty(): void {\r\n // category may not be empty\r\n }\r\n\r\n\r\n toggleMenu(hide?: boolean): void {\r\n\r\n if (!this.menuActive && !hide) {\r\n if (this.menu_element) {\r\n this.renderer.addClass(this.menu_element, \"menu--active\");\r\n }\r\n if (this.responsive_menu_element) {\r\n this.dataSvc.menuRespShow(true);\r\n // $(\"html\").addClass(\"locked\");\r\n // this.renderer.addClass(this.responsive_menu_element, \"responsive-menu--active\");\r\n }\r\n if (this.navigation_element) {\r\n this.renderer.addClass(this.navigation_element, \"navigation--active\");\r\n }\r\n this.menuActive = true;\r\n } else {\r\n if (this.menu_element) {\r\n this.renderer.removeClass(this.menu_element, \"menu--active\");\r\n }\r\n if (this.responsive_menu_element) {\r\n this.dataSvc.menuRespShow(false);\r\n // $(\"html\").removeClass(\"locked\");\r\n // this.renderer.removeClass(this.responsive_menu_element, \"responsive-menu--active\");\r\n }\r\n if (this.navigation_element) {\r\n this.renderer.removeClass(this.navigation_element, \"navigation--active\");\r\n }\r\n this.menuActive = false;\r\n }\r\n }\r\n\r\n toggleSubMenu(e: MouseEvent): void {\r\n e.preventDefault();\r\n let clickEl: HTMLElement = e.target;\r\n var li = clickEl.closest('li.menu__item');\r\n if (li) {\r\n if (li == clickEl.closest('li.menu__item--active')) {\r\n this.renderer.removeClass(li, \"menu__item--active\");\r\n } else {\r\n this.renderer.addClass(li, \"menu__item--active\");\r\n }\r\n }\r\n }\r\n\r\n menuItemMouseEnter(place: string): void {\r\n this.currentMousePlace = place;\r\n if (!this.initialized) return;\r\n if (this.timeoutHnd) clearTimeout(this.timeoutHnd);\r\n this.timeoutHnd = setTimeout(() => {\r\n this.showMenuDelay = true;\r\n }, MenuComponent.tomeoutEnter)\r\n }\r\n\r\n menuItemMouseLeave(): void {\r\n if (this.timeoutHnd) clearTimeout(this.timeoutHnd);\r\n this.timeoutHnd = setTimeout(() => {\r\n this.showMenuDelay = false;\r\n this.currentMousePlace = null;\r\n }, MenuComponent.tomeoutLeave)\r\n }\r\n\r\n public hideMenu(): void {\r\n if (this.timeoutHnd) clearTimeout(this.timeoutHnd);\r\n this.showMenuDelay = false;\r\n this.currentMousePlace = null;\r\n }\r\n\r\n public linkClick(): void {\r\n this.dataSvc.menuRespShow(false);\r\n }\r\n\r\n}\r\n","\r\n\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {MenuComponent} from \"./menu.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {CategoryModule} from \"../category/category.module\";\r\nimport {InnovationModule} from \"../innovation/innovation.module\";\r\nimport {ArticleListModule} from \"../articles/article-list.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {ResponsiveMenuListModule} from \"../responsive-menu-list/responsive-menu-list.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n RouterModule,\r\n CustomPipesModule,\r\n CategoryModule,\r\n InnovationModule,\r\n ArticleListModule,\r\n ResponsiveMenuListModule\r\n ],\r\n declarations: [MenuComponent],\r\n exports: [MenuComponent]\r\n})\r\n\r\nexport class MenuModule {\r\n}\r\n","import {Component, Injector, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {FlexCaptchaService} from \"../../services/flex-captcha.service\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\n\r\nexport type RegistrationResult = 'Success' | 'AlreadyRegistered' | 'NotValid' | 'Failure' | 'None';\r\n\r\nexport interface RegistrationStatus {\r\n status: RegistrationResult;\r\n}\r\n\r\n@Component({\r\n selector: 'cmp-newsletter-registration',\r\n templateUrl: '../../tpl/newsletter-registration.html',\r\n styleUrls: ['../../assets/styles/2-components/newsletter.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class NewsLetterRegistrationComponent extends Translatable {\r\n\r\n regStatus: RegistrationStatus = {status: 'None'};\r\n statusMsgHtml: SafeHtml;\r\n statusMsgHtml2: SafeHtml;\r\n newsForm: FormGroup;\r\n isFailure: boolean = false;\r\n gdprUrl: string;\r\n private captchaSvcLoaded: boolean = false;\r\n private fcSvc: FlexCaptchaService;\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private http: HttpClient, private sanitizer: DomSanitizer,\r\n private fb: FormBuilder, private injector:Injector) {\r\n super(dataSvc, seSvc);\r\n\r\n this.gdprUrl = this.seSvc.settings.termsAndConditions[this.seSvc.culture.cultureId].gdprUrl;\r\n let patEmail = this.seSvc.settings.validationPatterns.email;\r\n\r\n this.newsForm = this.fb.group({\r\n email: ['', [Validators.required, Validators.pattern(patEmail)]]\r\n })\r\n this.newsForm\r\n .valueChanges\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.regStatus.status = 'None';\r\n })\r\n }\r\n\r\n executeCaptcha(): void {\r\n this.fcSvc.executeCaptcha('newsletter_subscription', 'newsletter-registration.component.onCaptchaExecuted')\r\n .subscribe(res => {\r\n this.isFailure = !res.success;\r\n if (res) {\r\n this.register(res.secret);\r\n } else {\r\n this.statusMsgHtml = this.sanitizer.bypassSecurityTrustHtml(this.sen['app-captcha-failed']);\r\n this.statusMsgHtml2 = null;\r\n }\r\n })\r\n }\r\n\r\n resetForm(): void {\r\n this.newsForm.reset({email: null}, {emitEvent: false});\r\n }\r\n\r\n onEmailInputFocus(): void {\r\n if (!this.captchaSvcLoaded) {\r\n this.captchaSvcLoaded = true;\r\n this.fcSvc = this.injector.get(FlexCaptchaService);\r\n }\r\n }\r\n\r\n private register(secret: string) {\r\n this.isFailure = false;\r\n if (!this.newsForm.valid) return;\r\n\r\n const email: string = this.newsForm.get('email').value;\r\n const headers = new HttpHeaders({'Captcha-Secret': secret});\r\n\r\n this.http.post(`api/newsletter/register`, {email: email}, {headers: headers})\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n let signal: boolean = false;\r\n this.regStatus = res;\r\n switch (this.regStatus.status) {\r\n case 'Success':\r\n this.statusMsgHtml = this.sanitizer.bypassSecurityTrustHtml(this.sen['newsletter-reg-success']);\r\n this.statusMsgHtml2 = this.sanitizer.bypassSecurityTrustHtml(this.sen['newsletter-reg-success2']);\r\n signal = true;\r\n this.resetForm();\r\n this.isFailure = false;\r\n this.regStatus.status = res.status;\r\n break;\r\n case 'AlreadyRegistered':\r\n this.statusMsgHtml = this.sanitizer.bypassSecurityTrustHtml(this.sen['newsletter-reg-already-reg']);\r\n this.statusMsgHtml2 = null;\r\n this.isFailure = true;\r\n signal = true;\r\n break;\r\n case 'Failure':\r\n this.statusMsgHtml = this.sanitizer.bypassSecurityTrustHtml(this.sen['newsletter-reg-failure']);\r\n this.statusMsgHtml2 = null;\r\n this.isFailure = true;\r\n signal = true;\r\n break;\r\n }\r\n if (signal) {\r\n let tim: any = setTimeout(() => {\r\n this.regStatus.status = 'None';\r\n this.newsForm.reset();\r\n clearTimeout(tim);\r\n }, 20000)\r\n }\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n inputKeyUp(evt: KeyboardEvent): void {\r\n if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n this.executeCaptcha();\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n {{sen['newsletter-title']}}\r\n
\r\n\r\n
\r\n {{sen['newsletter-subtitle']}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n\r\n
\r\n {{sen['newsletter-gdpr-agreement']}}\r\n\r\n \r\n {{sen['newsletter-gdpr-agreement-2']}}\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {NewsLetterRegistrationComponent} from \"./newsletter-registration.component\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ValidationModule} from \"../validation/validation.module\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {AlertModule} from \"../alert/alert.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ValidationModule,\r\n RouterModule,\r\n AlertModule\r\n ],\r\n declarations: [\r\n NewsLetterRegistrationComponent\r\n\r\n ],\r\n exports: [\r\n NewsLetterRegistrationComponent\r\n\r\n ]\r\n})\r\n\r\nexport class NewsLetterRegistrationModule {\r\n}\r\n","import {Component, ViewEncapsulation} from '@angular/core';\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {loadFromSession, saveToSession} from \"../../helpers/cookie.helper\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n selector: 'cmp-notify-stripe',\r\n templateUrl: '../../tpl/notify-stripe.html',\r\n styleUrls: ['../../assets/styles/2-components/notify-stripe.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class NotifyStripeComponent extends Translatable {\r\n\r\n html: string | SafeHtml;\r\n showNotification: boolean = false;\r\n notifyStripeDismissed: boolean = false;\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private sanitizer: DomSanitizer, private http: HttpClient) {\r\n super(dataSvc, seSvc);\r\n this.notifyStripeDismissed = loadFromSession('notifyStripeDismissed');\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.notifyStripeDismissed) {\r\n this.getData();\r\n }\r\n }\r\n\r\n hide(): void {\r\n this.showNotification = false;\r\n saveToSession('notifyStripeDismissed', true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n getData(): void {\r\n this.http.get('api/settings/get-notify-stripe')\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(res => {\r\n if (res) {\r\n this.showNotification = true;\r\n this.html = this.sanitizer.bypassSecurityTrustHtml(res);\r\n } else {\r\n this.showNotification = false;\r\n this.html = null;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","
\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t
\r\n
\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {NotifyStripeComponent} from \"./notify-stripe.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule\r\n ],\r\n declarations: [NotifyStripeComponent],\r\n exports: [NotifyStripeComponent]\r\n})\r\n\r\nexport class NotifyStripeModule {\r\n}","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\nimport {Params} from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'cmp-page-hero',\r\n templateUrl: '../../tpl/page-hero.html',\r\n styleUrls: ['../../assets/styles/2-components/page-hero.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class PageHeroComponent extends Translatable {\r\n\r\n @Input() title: string | SafeHtml;\r\n @Input() description: string | SafeHtml;\r\n @Input() buttonTitle: string = null;\r\n @Input() buttonUrl: string = null;\r\n @Input() queryParams: Params = {};\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.description && this.description instanceof String) this.description = this.sanitizer.bypassSecurityTrustHtml(this.description.toString());\r\n if (this.title && this.title instanceof String) this.title = this.sanitizer.bypassSecurityTrustHtml(this.title.toString());\r\n }\r\n\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n\r\n
\r\n

\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {PageHeroComponent} from \"./page-hero.component\";\r\nimport {BreadcrumbsModule} from \"../breadcrumbs/breadcrumbs.module\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n BreadcrumbsModule,\r\n RouterModule\r\n ],\r\n declarations: [\r\n PageHeroComponent\r\n ],\r\n exports: [\r\n PageHeroComponent\r\n ]\r\n})\r\n\r\nexport class PageHeroModule {\r\n}","import {Component, EventEmitter, Input, Output, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {ItemType, PageChangedInfo} from \"./common\";\r\n\r\n@Component({\r\n selector: 'cmp-pagination-append',\r\n templateUrl: './pagination-append.html',\r\n styleUrls: ['../../assets/styles/2-components/items-more.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class PaginationAppendComponent extends Translatable {\r\n @Input() totalItems: number;\r\n @Input() itemsPerPage: number;\r\n @Input() pageIndex: number;\r\n @Input() itemType: ItemType;\r\n @Input() cssClass: string;\r\n @Input() linkText: string;\r\n\r\n @Output() pageChanged: EventEmitter = new EventEmitter();\r\n\r\n itemPlural: {};\r\n\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n public catSvc: CategoryService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.itemPlural = {\r\n // '=0': `# ${this.sen[`0--${this.itemType}`]}`,\r\n '=1': this.sen[`1-${this.itemType}`],\r\n '=2': this.sen[`2-3-4--${this.itemType}`],\r\n '=3': this.sen[`2-3-4--${this.itemType}`],\r\n '=4': this.sen[`2-3-4--${this.itemType}`],\r\n 'other': this.sen[`5-and-more--${this.itemType}`]\r\n };\r\n }\r\n\r\n get nextPageSize(): number {\r\n return Math.min(this.totalItems - (this.pageIndex * this.itemsPerPage), this.itemsPerPage);\r\n }\r\n\r\n onPageChanged() {\r\n const info: PageChangedInfo = {\r\n page: this.pageIndex + 1,\r\n itemsPerPage: this.itemsPerPage\r\n };\r\n this.pageChanged.emit(info);\r\n }\r\n}\r\n\r\n","\r\n","import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {PageChangedInfo} from \"./common\";\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'cmp-pagination-prevnext',\r\n templateUrl: './pagination-prevnext.html',\r\n styleUrls: ['../../assets/styles/2-components/pagination.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class PaginationPrevnextComponent extends Translatable implements OnChanges {\r\n @Input() totalItems: number;\r\n @Input() itemsPerPage: number = 1;\r\n @Input() pageIndex: number;\r\n @Input() editPage: boolean = false;\r\n @Output() pageChanged: EventEmitter = new EventEmitter();\r\n\r\n dataForm: FormGroup;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n public catSvc: CategoryService, private fb: FormBuilder) {\r\n super(dataSvc, seSvc);\r\n\r\n this.createForm();\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['totalItems'] && changes['totalItems'].currentValue || changes['itemsPerPage'] && changes['itemsPerPage'].currentValue) {\r\n this.dataForm.patchValue({\r\n page: this.pageIndex,\r\n pages: this.itemsPerPage > 0 ? Math.ceil(this.totalItems / this.itemsPerPage) : 1\r\n })\r\n if (this.editPage) {\r\n this.dataForm.get('page').enable();\r\n } else {\r\n this.dataForm.get('page').disable();\r\n }\r\n }\r\n }\r\n\r\n createForm(): void {\r\n this.dataForm = this.fb.group({\r\n page: [{value: '1', disabled: !this.editPage}, [Validators.pattern(/\\d{,3}/)]],\r\n pages: [{value: '1', disabled: true}]\r\n })\r\n }\r\n\r\n pageFormChnaged(): void {\r\n if (this.editPage) {\r\n if (!this.dataForm.get('page').value) {\r\n this.dataForm.patchValue({page: this.pageIndex})\r\n } else if (this.dataForm.get('page').value < 1) {\r\n this.dataForm.patchValue({page: 1})\r\n } else if (this.dataForm.get('page').value > this.dataForm.get('pages').value) {\r\n this.dataForm.patchValue({page: this.dataForm.get('pages').value})\r\n } else if (this.dataForm.get('page').value != this.pageIndex) {\r\n this.onPageChanged(this.dataForm.get('page').value > this.pageIndex, false);\r\n }\r\n }\r\n }\r\n\r\n pageFormKeyUp(evt: KeyboardEvent): void {\r\n if (this.editPage) {\r\n if (evt.key === 'Enter' || evt.key === 'NumpadEnter') {\r\n const page = parseInt(this.dataForm.get('page').value, 10);\r\n if (isNaN(page)) this.dataForm.patchValue({page: this.pageIndex});\r\n this.pageFormChnaged();\r\n } else if (evt.key === 'Escape') {\r\n this.dataForm.patchValue({page: this.pageIndex});\r\n this.pageFormChnaged();\r\n }\r\n }\r\n }\r\n\r\n onPageChanged(next: boolean, updateForm: boolean) {\r\n let newPageIndex = next ? this.pageIndex + 1 : this.pageIndex - 1;\r\n if (newPageIndex != this.pageIndex) {\r\n const info: PageChangedInfo = {\r\n page: newPageIndex,\r\n itemsPerPage: this.itemsPerPage\r\n };\r\n if (updateForm) this.dataForm.patchValue({page: newPageIndex});\r\n this.pageChanged.emit(info);\r\n }\r\n }\r\n\r\n get nextEnabled(): boolean {\r\n let lastPage = this.itemsPerPage > 0 ? this.totalItems / this.itemsPerPage : 1;\r\n return this.pageIndex < lastPage;\r\n }\r\n\r\n}\r\n\r\n","","import {Component, EventEmitter, Input, Output, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {PageChangedEvent} from \"ngx-bootstrap/pagination\";\r\nimport {PageChangedInfo} from \"./common\";\r\n\r\n@Component({\r\n selector: 'cmp-pagination',\r\n templateUrl: './pagination.html',\r\n styleUrls: ['../../assets/styles/2-components/pagination.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class PaginationComponent extends Translatable {\r\n @Input() totalItems: number;\r\n @Input() itemsPerPage: number;\r\n @Input() pageIndex: number;\r\n @Input() maxSize: number = 3;\r\n @Output() pageChanged: EventEmitter = new EventEmitter();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n public catSvc: CategoryService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n\r\n onPageChanged(event: PageChangedEvent) {\r\n const info: PageChangedInfo = {\r\n page: event.page,\r\n itemsPerPage: event.itemsPerPage\r\n };\r\n this.pageChanged.emit(info);\r\n }\r\n}\r\n\r\n","\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {PaginationModule} from \"ngx-bootstrap/pagination\";\r\nimport {PaginationComponent} from \"./pagination.component\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {PaginationAppendComponent} from \"./pagination-append.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {PaginationPrevnextComponent} from \"./pagination-prevnext.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n PaginationModule,\r\n FormsModule,\r\n RouterModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n PaginationComponent,\r\n PaginationAppendComponent,\r\n PaginationPrevnextComponent\r\n ],\r\n exports: [\r\n PaginationComponent,\r\n PaginationAppendComponent,\r\n PaginationPrevnextComponent\r\n ]\r\n})\r\n\r\nexport class FlexPaginationModule {}\r\n","export interface NumberedPagination {\r\n pageIndex: number;\r\n maxPages: number;\r\n pages: number[];\r\n}\r\nexport enum RulerFactoryOption {\r\n Start = 'START',\r\n End = 'END',\r\n Default = 'DEFAULT',\r\n}\r\n","import {Component, EventEmitter, Input, Output, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {PageChangedInfo} from \"../pagination/common\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {NumberedPagination, RulerFactoryOption} from \"./common\";\r\n\r\n@Component({\r\n selector: 'cmp-paginator',\r\n templateUrl: '../../tpl/paginator.html',\r\n styleUrls: ['../../assets/styles/2-components/pagination.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class PaginatorComponent extends Translatable {\r\n\r\n @Input() totalItems: number;\r\n @Input() itemsPerPage: number;\r\n @Input() pageIndex: number = 1;\r\n @Input() maxSize: number = 3;\r\n @Input() urlPageParamName = 'page';\r\n @Output() pageChanged: EventEmitter = new EventEmitter();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n public catSvc: CategoryService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n get maxPages(): number {\r\n return Math.ceil(this.totalItems / this.itemsPerPage) ?? 0;\r\n }\r\n\r\n get pagination(): NumberedPagination {\r\n const {pageIndex, maxPages, maxSize} = this;\r\n const pages = this.ruler(pageIndex, maxPages, (maxSize > maxPages ? maxPages : maxSize));\r\n return {pageIndex, maxPages, pages} as NumberedPagination;\r\n }\r\n\r\n navigateToPage(pageNumber: number, e: Event = null): void {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n if (this.allowNavigation(pageNumber, this.pageIndex, this.maxPages)) {\r\n this.pageIndex = pageNumber;\r\n\r\n const info: PageChangedInfo = {\r\n page: this.pageIndex,\r\n itemsPerPage: this.itemsPerPage\r\n };\r\n this.pageChanged.emit(info);\r\n }\r\n }\r\n\r\n trackByFn(index: number): number {\r\n return index;\r\n }\r\n\r\n ruler(currentIndex: number, maxPages: number, rulerLength: number): number[] {\r\n const array = new Array(rulerLength).fill(null);\r\n const min = Math.floor(rulerLength / 2);\r\n\r\n return array.map((_, index) =>\r\n this.rulerFactory(currentIndex, index, min, maxPages, rulerLength)\r\n );\r\n }\r\n\r\n rulerOption(currentIndex: number, min: number, maxPages: number): RulerFactoryOption {\r\n return currentIndex <= min\r\n ? RulerFactoryOption.Start\r\n : currentIndex >= maxPages - min\r\n ? RulerFactoryOption.End\r\n : RulerFactoryOption.Default;\r\n }\r\n\r\n rulerFactory(currentIndex: number, index: number, min: number, maxPages: number, rulerLength: number): number {\r\n const factory = {\r\n [RulerFactoryOption.Start]: () => index + 1,\r\n [RulerFactoryOption.End]: () => maxPages - rulerLength + index + 1,\r\n [RulerFactoryOption.Default]: () => currentIndex + index - min,\r\n };\r\n\r\n return factory[this.rulerOption(currentIndex, min, maxPages)]();\r\n }\r\n\r\n allowNavigation(\r\n pageNumber: number,\r\n index: number,\r\n maxPages: number\r\n ): boolean {\r\n return pageNumber !== index && pageNumber > 0 && pageNumber <= maxPages;\r\n }\r\n\r\n getPageUrl(pageNum: number): string {\r\n var url = new window.URL(window.location.href);\r\n if (pageNum > 1)\r\n url.searchParams.set(this.urlPageParamName, String(pageNum));\r\n else {\r\n if (url.searchParams.has(this.urlPageParamName))\r\n url.searchParams.delete(this.urlPageParamName)\r\n }\r\n return url.toString();\r\n }\r\n\r\n}\r\n\r\n","\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {PaginatorComponent} from \"./paginator.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n PaginatorComponent\r\n ],\r\n exports: [\r\n PaginatorComponent\r\n ]\r\n})\r\n\r\nexport class PaginatorModule {\r\n}","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {SafeHtml} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n name: 'crophtml'\r\n})\r\nexport class CropHtml implements PipeTransform {\r\n transform(val: string | SafeHtml) {\r\n let regex = /(<([^>]+)>)/ig;\r\n let res = val.toString();\r\n return res.replace(regex, \"\");\r\n }\r\n}","import {NgModule} from '@angular/core';\r\nimport {CropHtml} from \"./cropHtml\";\r\nimport {StockAvailability} from \"./stockAvailability\";\r\nimport {DecimalPipe} from \"@angular/common\";\r\nimport {WebpPipe} from \"./webp.pipe\";\r\nimport {ElipsisPipe} from \"./elipsis.pipe\";\r\n\r\n@NgModule({\r\n declarations: [\r\n CropHtml,\r\n StockAvailability,\r\n WebpPipe,\r\n ElipsisPipe\r\n ],\r\n exports: [\r\n CropHtml,\r\n StockAvailability,\r\n WebpPipe,\r\n ElipsisPipe\r\n ],\r\n providers: [\r\n DecimalPipe\r\n ]\r\n})\r\n\r\nexport class CustomPipesModule {\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'ellipsis'\r\n})\r\nexport class ElipsisPipe implements PipeTransform {\r\n transform(val: string, args: number) {\r\n if (args === undefined || val == null) {\r\n return val;\r\n }\r\n\r\n if (val.length > args) {\r\n let idx: number = val.lastIndexOf(' ', args);\r\n return val.substring(0, (idx == -1 ? args : idx)) + '…';\r\n } else {\r\n return val;\r\n }\r\n }\r\n}","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\n\r\n@Pipe({name: 'stock'})\r\nexport class StockAvailability extends Translatable implements PipeTransform {\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n transform(value: number, QuantityOnStockTotal: number = 0): string {\r\n\r\n if((value === 0 && QuantityOnStockTotal === 0 )|| (value === null && QuantityOnStockTotal === 0 )) {\r\n return this.sen['stock-status-not-available'];\r\n }\r\n if((value === 0 && QuantityOnStockTotal > 0 ) || (value === null && QuantityOnStockTotal > 0 )){\r\n return this.sen['stock-status-somewhere-else'];\r\n }\r\n else if(value > 0) {\r\n return this.sen['stock-status']\r\n }\r\n else\r\n return \"\"\r\n }\r\n\r\n\r\n\r\n}","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {isLocalImagePath} from \"../../helpers/string.helper\";\r\n\r\n@Pipe({name: 'webp'})\r\nexport class WebpPipe implements PipeTransform {\r\n\r\n transform(value: string): any {\r\n if (!value) return value;\r\n if (!isLocalImagePath(value)) return encodeURI(value) ;\r\n\r\n let ext = value.match(/\\.[^.]*$/)[0];\r\n return encodeURI(value.replace(ext, '.webp'));\r\n }\r\n\r\n}\r\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'cmp-preloader',\r\n templateUrl: '../../tpl/preloader.html',\r\n styleUrls: ['../../assets/styles/2-components/preloader.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n\r\n})\r\n\r\nexport class PreloaderComponent {\r\n\r\n @Input() loading: boolean = false;\r\n\r\n constructor () {}\r\n}\r\n","
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {PreloaderComponent} from \"./preloader.component\";\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [PreloaderComponent],\r\n exports: [PreloaderComponent]\r\n})\r\n\r\nexport class PreloaderModule {}","import {Component, OnChanges, SimpleChanges, TemplateRef, ViewChild} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {RangeFormValue, ValueRangeSelector} from \"../product-parameter-filter/common\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {PageStateService} from \"../../services/page-state.service\";\r\n\r\n@Component({\r\n selector: 'cmp-price-filter',\r\n templateUrl: '../../tpl/price-filter.html'\r\n})\r\n\r\nexport class PriceFilterComponent extends Translatable implements OnChanges {\r\n\r\n @ViewChild('contentTemplate')contentTemplate:TemplateRef;\r\n\r\n isMinPriceInvalid: boolean = false;\r\n isMaxPriceInvalid: boolean = false;\r\n\r\n priceForm: FormGroup;\r\n decimalNumberPattern: RegExp;\r\n\r\n private _timeout: any;\r\n\r\n filterSectionHide: boolean = false;\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n get prices(): Array {\r\n return this.catSvc.prices;\r\n }\r\n\r\n get priceMin(): number {\r\n return this.catSvc.priceMin;\r\n }\r\n\r\n get priceMax(): number {\r\n return this.catSvc.priceMax;\r\n }\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private fb: FormBuilder, public catSvc: CategoryService,\r\n private pageStateSvc: PageStateService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.decimalNumberPattern = this.seSvc.settings.validationPatterns.decimalNumber;\r\n\r\n this.init();\r\n this.pageStateSvc.navigationStartEvent.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.init();\r\n });\r\n\r\n this.catSvc.afterSvcInit\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n let values: Array = this.catSvc.getPriceRange();\r\n this.setFormValue(values[0], values[1], false);\r\n this.enableDisable();\r\n });\r\n this.catSvc.filterDataChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.enableDisable();\r\n });\r\n\r\n\r\n }\r\n\r\n private init(): void {\r\n const priceRange: Array = this.catSvc.getPriceRange();\r\n\r\n this.createForm(priceRange[0], priceRange[1]);\r\n }\r\n\r\n private enableDisable() {\r\n if (!this.prices || !this.prices.length) {\r\n this.priceForm.controls.minPrice.disable({onlySelf: true, emitEvent: false});\r\n this.priceForm.controls.maxPrice.disable({onlySelf: true, emitEvent: false});\r\n } else {\r\n this.priceForm.controls.minPrice.enable({onlySelf: true, emitEvent: false});\r\n this.priceForm.controls.maxPrice.enable({onlySelf: true, emitEvent: false});\r\n }\r\n }\r\n\r\n private setFormValue(from: number, to: number, emitEvent: boolean) {\r\n if (!this.priceForm) {\r\n return;\r\n }\r\n\r\n this.priceForm.setValue({\r\n minPrice: from,\r\n maxPrice: to\r\n }, {emitEvent: emitEvent, onlySelf: true});\r\n\r\n\r\n }\r\n\r\n private createForm(from: number, to: number) {\r\n\r\n if (this.priceForm) {\r\n this.setFormValue(from, to, false);\r\n return;\r\n }\r\n this.priceForm = this.fb.group({\r\n minPrice: [from, [Validators.pattern(this.decimalNumberPattern), Validators.maxLength(6)]],\r\n maxPrice: [to, [Validators.pattern(this.decimalNumberPattern), Validators.maxLength(6)]]\r\n });\r\n\r\n this.priceForm.valueChanges\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.priceChanged();\r\n });\r\n }\r\n\r\n\r\n private getFormValues(): number[] {\r\n\r\n let valMin: any = this.priceForm.get('minPrice').value;\r\n let minPrice: number = parseFloat(valMin);\r\n\r\n if (Number.isNaN(minPrice) || minPrice == 0) {\r\n minPrice = null;\r\n }\r\n\r\n\r\n let valMax = this.priceForm.get('maxPrice').value;\r\n let maxPrice: number = parseFloat(valMax);\r\n if (Number.isNaN(maxPrice) || maxPrice == 0) {\r\n maxPrice = null;\r\n }\r\n\r\n\r\n return this.checkAndModifyRange(minPrice, maxPrice);\r\n }\r\n\r\n checkAndModifyRange(minPrice: number, maxPrice: number): number[] {\r\n let rangeValid = ValueRangeSelector.rangeIsValid(minPrice, maxPrice, this.prices);\r\n if (rangeValid) {\r\n return [minPrice, maxPrice];\r\n }\r\n\r\n\r\n let valueObj: RangeFormValue = {\r\n id: null,//neni podstatne\r\n from: minPrice, to: maxPrice\r\n };\r\n //range is not valid\r\n let safetyBrake = 0;\r\n while (!rangeValid && safetyBrake < 1000) {\r\n ValueRangeSelector.findClosestValues(valueObj, this.prices);\r\n rangeValid = ValueRangeSelector.rangeIsValid(valueObj.from, valueObj.to, this.prices);\r\n safetyBrake++;\r\n }\r\n\r\n if (rangeValid) {\r\n return [valueObj.from, valueObj.to];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n private setFormValues(): void {\r\n\r\n let minPrice: number = null;\r\n let maxPrice: number = null;\r\n\r\n const priceRange = this.catSvc.getPriceRange();\r\n\r\n if (priceRange) {\r\n if (priceRange.length) {\r\n minPrice = priceRange[0];\r\n }\r\n if (priceRange.length > 1) {\r\n maxPrice = priceRange[1];\r\n }\r\n }\r\n\r\n this.setFormValue(minPrice, maxPrice, false);\r\n\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['priceRange']) {\r\n this.setFormValues();\r\n }\r\n }\r\n\r\n priceChanged(): void {\r\n clearTimeout(this._timeout);\r\n this._timeout = setTimeout(() => {\r\n this.onPriceChanged(null);\r\n }, 500);\r\n\r\n }\r\n\r\n onPriceChanged(forceChange?: boolean): void {\r\n if (this.priceForm.valid && (this.priceForm.dirty || forceChange)) {\r\n let values: Array = this.getFormValues();\r\n\r\n if (!values) {\r\n return;\r\n }\r\n\r\n this.catSvc.setPriceRange([values[0], values[1]]);\r\n this.setFormValues();\r\n this.catSvc.getCategoryDetailData();\r\n }\r\n }\r\n\r\n\r\n get selectedPriceRange(): Array {\r\n return this.catSvc.getPriceRange();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}\r\n\r\n","\r\n
\r\n
\r\n {{sen['filter-price-title']}} {{seSvc.settings.currencies[seSvc.currencyId]}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {{sen['app-from']}}\r\n
\r\n\r\n \r\n\r\n
\r\n {{sen['app-to']}}\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {PriceFilterComponent} from \"./price-filter.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n PriceFilterComponent\r\n\r\n ],\r\n exports: [\r\n PriceFilterComponent\r\n\r\n ]\r\n})\r\n\r\nexport class PriceFilterModule {}\r\n","/**\r\n * Panel with checkboxes or other controls to filter by producers.\r\n * This is by design a standalone module, thus you can use it everywhere in the application.\r\n * You just need to provide it an id of the category you want to display the filter for.\r\n */\r\nimport {\r\n Component, TemplateRef, ViewChild\r\n} from '@angular/core';\r\nimport {ProducerSelectorBrief} from \"./common\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-producer-filter',\r\n templateUrl: '../../tpl/producer-filter.html'\r\n})\r\n\r\nexport class ProducerFilterComponent extends Translatable {\r\n\r\n @ViewChild('contentTemplate') contentTemplate: TemplateRef;\r\n\r\n filterSectionHide: boolean = false;\r\n\r\n producers: ProducerSelectorBrief[];\r\n showingAll: boolean;\r\n\r\n selectedProducers: Array = [];\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n bearableAmount: number = 6;\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private catSvc: CategoryService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.catSvc.filterDataChanged.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.catSvcFilterDataChangedHandler();\r\n });\r\n }\r\n\r\n private catSvcFilterDataChangedHandler(): void {\r\n this.selectedProducers = this.catSvc.selectedProducers;\r\n\r\n if (this.catSvc.producers) {\r\n this.producers = this.catSvc.producers;\r\n this.checkCounts();\r\n } else {\r\n this.producers = null;\r\n }\r\n }\r\n\r\n private checkCounts(): void {\r\n if (!this.producers) {\r\n return;\r\n }\r\n\r\n this.producers.forEach((producer) => {\r\n if (!producer.productCount && this.selectedProducers.indexOf(producer.id) > -1) {\r\n this.selectedProducers = this.selectedProducers.filter(s => s != producer.id);\r\n }\r\n });\r\n\r\n this.catSvc.selectedProducers = this.selectedProducers;\r\n }\r\n\r\n producerChanged(id: number, checked: boolean) {\r\n\r\n let index = this.selectedProducers.indexOf(id);\r\n\r\n if (checked && index == -1) this.selectedProducers.push(id);\r\n else if (index >= 0) this.selectedProducers.splice(index, 1);\r\n\r\n this.catSvc.selectedProducers = this.selectedProducers;\r\n this.catSvc.getCategoryDetailData();\r\n }\r\n\r\n setShowAll(val: boolean): void {\r\n this.showingAll = val;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}\r\n","\r\n
0\" class=\"filter__section\" [class.filter__section--hide]=\"filterSectionHide\" >\r\n
\r\n {{sen['cat-producers-title']}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n -1\" type=\"checkbox\" [disabled]=\"producer.isDisabled\" (change)=\"producerChanged(producer.id, prod.checked)\">\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n bearableAmount\">\r\n
\r\n
\r\n \r\n
\r\n -1\" type=\"checkbox\" (change)=\"producerChanged(producer.id, prod.checked)\">\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {{sen['filter-show-all']}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n {{sen['filter-show-less']}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
","/**\r\n * Module containing stuff related to producers.\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProducerFilterComponent} from \"./producer-filter.component\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ],\r\n declarations: [ProducerFilterComponent],\r\n exports: [ProducerFilterComponent]\r\n})\r\n\r\nexport class ProducerFilterModule {}","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {IProductAmountSettings} from \"./interfaces/IProductAmountSettings\";\r\nimport { CartItemSelectorFull } from \"../cart/common\";\r\nimport {ProductAmountCartAdapter} from \"../../helpers/ProductAmountCartAdapter\";\r\n\r\n\r\n@Pipe({name: 'ProductAmountCart'})\r\nexport class ProductAmountCartPipe implements PipeTransform {\r\n\r\n transform(product: CartItemSelectorFull): IProductAmountSettings {\r\n if (!product)\r\n return null;\r\n\r\n return new ProductAmountCartAdapter(product);\r\n }\r\n}","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {ProductAmountComponent} from './product-amount/product-amount.component';\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ValidationModule} from \"../validation/validation.module\";\r\nimport {ProductAmountPipe, VariantAmountPipe, WishlistAmountPipe} from \"./product-amount.pipe\";\r\nimport { ProductAmountCartPipe } from './product-amount-cart.pipe';\r\nimport {ProductBoxModelAmountPipe, ProductVariantAmountPipe} from \"./product-variant-amount.pipe\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ProductAmountComponent,\r\n ProductAmountPipe,\r\n VariantAmountPipe,\r\n ProductAmountCartPipe,\r\n ProductVariantAmountPipe,\r\n ProductBoxModelAmountPipe,\r\n WishlistAmountPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ValidationModule\r\n ],\r\n exports: [\r\n ProductAmountComponent,\r\n ProductAmountPipe,\r\n VariantAmountPipe,\r\n ProductAmountCartPipe,\r\n ProductVariantAmountPipe,\r\n ProductBoxModelAmountPipe,\r\n WishlistAmountPipe\r\n ]\r\n})\r\nexport class ProductAmountModule {\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ProductSelector, ProductVariantDetailSelector} from \"../product/common\";\r\nimport {ProductAmountAdapter, ProductVariantAmountAdapter, WishlistAmountAdapter} from \"../../helpers/ProductAmountAdapter\";\r\nimport {IProductAmountSettings} from \"./interfaces/IProductAmountSettings\";\r\nimport {ProductVariantBriefSelector} from \"../../interfaces/general\";\r\nimport {IWishListSelector} from \"../wish-list/common\";\r\n\r\n@Pipe({name: 'ProductAmount'})\r\nexport class ProductAmountPipe implements PipeTransform {\r\n\r\n transform(product: ProductSelector): IProductAmountSettings {\r\n if (!product)\r\n return null;\r\n\r\n if((product).id) {\r\n return new ProductVariantAmountAdapter(product);\r\n } else {\r\n return new ProductAmountAdapter(product);\r\n }\r\n }\r\n\r\n}\r\n\r\n@Pipe({name: 'VariantAmount'})\r\nexport class VariantAmountPipe implements PipeTransform {\r\n\r\n transform(product: ProductVariantDetailSelector): IProductAmountSettings {\r\n if (!product)\r\n return null;\r\n\r\n return new ProductVariantAmountAdapter(product);\r\n }\r\n\r\n}\r\n\r\n@Pipe({name: 'WishlistAmount'})\r\nexport class WishlistAmountPipe implements PipeTransform {\r\n\r\n transform(product: IWishListSelector): IProductAmountSettings {\r\n if (!product)\r\n return null;\r\n\r\n return new WishlistAmountAdapter(product);\r\n }\r\n\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {Translatable} from \"../../../interfaces/general\";\r\nimport {SettingsService} from \"../../../services/settings.service\";\r\nimport {DataService} from \"../../../services/data.service\";\r\nimport {IProductAmountSettings} from \"../interfaces/IProductAmountSettings\";\r\nimport {IProductAmountConfirm} from \"../interfaces/IProductAmountConfirm\";\r\nimport {Numeric} from \"../../../helpers/numeric.helper\";\r\nimport {MathUtils} from \"../../../helpers/MathUtils\";\r\n\r\n@Component({\r\n selector: 'cmp-product-amount',\r\n templateUrl: './product-amount.component.html',\r\n styleUrls: ['../../../assets/styles/2-components/amount.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ProductAmountComponent extends Translatable implements OnInit, OnChanges {\r\n\r\n @Input() classModificator: string;\r\n @Input() isDisabled: boolean = false;\r\n @Input() isLarge: boolean = false;\r\n\r\n @Input() data: IProductAmountSettings = null;\r\n @Output() confirmed: EventEmitter = new EventEmitter();\r\n\r\n @Input() amount: number = null;\r\n @Output() amountChange: EventEmitter = new EventEmitter();\r\n\r\n public form: FormGroup = null;\r\n\r\n constructor(\r\n seSvc: SettingsService,\r\n dataSvc: DataService,\r\n private fb: FormBuilder\r\n ) {\r\n super(dataSvc, seSvc);\r\n\r\n this.form = this.fb.group({\r\n quantity: [1, [Validators.required, Validators.pattern(this.seSvc.settings.validationPatterns.decimalNumber), Validators.maxLength(5)]]\r\n });\r\n }\r\n\r\n ngOnInit() { \r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['data'] && changes['data'].currentValue) {\r\n this.form.patchValue({\r\n quantity: this.data.MinQuantity\r\n });\r\n }\r\n else if (changes['data'] && changes['data'].currentValue === null) {\r\n this.form.patchValue({\r\n quantity: 1\r\n });\r\n }\r\n if (changes['amount'] && changes['amount'].firstChange && Numeric.isNumber(changes['amount'].currentValue)) {\r\n this.form.patchValue({\r\n quantity: this.amount\r\n });\r\n }\r\n }\r\n\r\n public SubtractAmount(elem: HTMLInputElement): void {\r\n const step: number = this.data.Factor || 1;\r\n const val: number = parseFloat((elem).value.replace(',', '.'));\r\n let newVal = null;\r\n if (Number.isNaN(val)) {\r\n newVal = this.data.MinQuantity;\r\n }\r\n else {\r\n newVal = val - step;\r\n if (!MathUtils.IsMultiple(newVal, step)) {\r\n newVal = val - val % step;\r\n }\r\n newVal = parseFloat(newVal.toFixed(5));\r\n }\r\n\r\n if (newVal < this.data.MinQuantity)\r\n newVal = this.data.MinQuantity;\r\n\r\n if (this.Amount !== newVal) {\r\n this.form.patchValue({\r\n quantity: newVal\r\n });\r\n\r\n if (this.IsValid)\r\n this.amountChange.emit(this.Amount);\r\n }\r\n }\r\n\r\n public AddAmount(elem: HTMLInputElement): void {\r\n const step: number = this.data.Factor || 1;\r\n let val: number = parseFloat((elem).value.replace(',', '.'));\r\n let newVal = null;\r\n if (Number.isNaN(val)) {\r\n newVal = this.data.MinQuantity;\r\n }\r\n else {\r\n newVal = val + step;\r\n if (!MathUtils.IsMultiple(newVal, step)) {\r\n newVal = newVal - newVal % step;\r\n }\r\n newVal = parseFloat(newVal.toFixed(5));\r\n }\r\n this.form.patchValue({\r\n quantity: newVal\r\n });\r\n\r\n if (this.IsValid)\r\n this.amountChange.emit(this.Amount);\r\n }\r\n\r\n public GetMinAmount(): number {\r\n if (!this.data || !this.data.MinQuantity) return 0;\r\n return this.data.MinQuantity;\r\n }\r\n\r\n public GetMaxAmount(): number {\r\n if (!this.data || !this.data.MaxQuantity) return Number.MAX_VALUE;\r\n return this.data.MaxQuantity;\r\n }\r\n\r\n public IsMultiple(): boolean {\r\n if (!this.data || !this.data.Factor)\r\n return true;\r\n\r\n const res = MathUtils.IsMultiple(this.Amount, this.data.Factor);\r\n return res;\r\n }\r\n\r\n public KeyUp(evt: KeyboardEvent): void {\r\n if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n if (this.form.valid) {\r\n this.confirmed.emit(this.GetAmountConfirm());\r\n }\r\n }\r\n }\r\n\r\n public GetAmountConfirm(): IProductAmountConfirm {\r\n return this.form.valid ? {\r\n Amount: this.Amount\r\n } : null;\r\n }\r\n\r\n public get Amount(): number {\r\n try {\r\n const value = this.form.get('quantity').value;\r\n if (value) {\r\n const parsedValue = parseFloat(value.toString().replace(',', '.'));\r\n if (!Number.isNaN(parsedValue)) {\r\n return parsedValue;\r\n }\r\n }\r\n }\r\n catch {\r\n return null;\r\n }\r\n return null;\r\n }\r\n\r\n public InputChange(): void {\r\n if (this.IsValid)\r\n this.amountChange.emit(this.Amount);\r\n }\r\n\r\n public get IsValid(): boolean {\r\n return this.form.valid && this.GetMinAmount() <= this.Amount && this.Amount <= this.GetMaxAmount() && this.IsMultiple();\r\n }\r\n}\r\n","
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n GetMaxAmount()\" [msg]=\"sen['product-qty-exceeded'] + ' ' + GetMaxAmount() + ' ' + (this.data?.Unit || '')\">\r\n \r\n
","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ProductBoxModelAmountAdapter, ProductVariantAmountAdapter} from \"../../helpers/ProductAmountAdapter\";\r\nimport {IProductAmountSettings} from \"./interfaces/IProductAmountSettings\";\r\nimport {ProductVariantBriefSelector} from \"../../interfaces/general\";\r\nimport {IProductBoxModel} from \"../product/common\";\r\n\r\n@Pipe({name: 'ProductVariantAmount'})\r\nexport class ProductVariantAmountPipe implements PipeTransform {\r\n\r\n transform(product: ProductVariantBriefSelector): IProductAmountSettings {\r\n if (!product)\r\n return null;\r\n\r\n return new ProductVariantAmountAdapter(product);\r\n }\r\n\r\n}\r\n\r\n@Pipe({name: 'ProductBoxModelAmount'})\r\nexport class ProductBoxModelAmountPipe implements PipeTransform {\r\n\r\n transform(product: IProductBoxModel): IProductAmountSettings {\r\n if (!product)\r\n return null;\r\n\r\n return new ProductBoxModelAmountAdapter(product);\r\n }\r\n\r\n}","/**\r\n * @description\r\n * Implements single product box which can be then used in several places\r\n * Created by petr.humplik on 04.06.2017.\r\n */\r\n\r\nimport {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\r\nimport {AvailabilitySelector, Culture, ProductRequestType, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {AvailabilitySetting, SettingsService} from \"../../services/settings.service\";\r\nimport {CartItemSelectorBrief} from \"../cart/common\";\r\nimport {CartService} from \"../cart/cart.service\";\r\nimport {FormBuilder, FormGroup, Validators} from \"@angular/forms\";\r\nimport {CompareProductsService} from \"../../services/compare-products.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {ProductDetailModel, ProductSelector} from \"../product/common\";\r\nimport {isLocalImagePath} from \"../../helpers/string.helper\";\r\nimport {WishListService} from \"../../services/wish-list-service\";\r\nimport {ProductBoxSize} from \"./common\";\r\nimport {Params} from \"@angular/router\";\r\nimport {IWishListSelector} from \"../wish-list/common\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-product-box',\r\n templateUrl: '../../tpl/product-box.html',\r\n styleUrls: ['../../assets/styles/2-components/product-box.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ProductBoxComponent extends Translatable implements AfterViewInit, OnChanges {\r\n\r\n @Input() product: ProductSelector | IWishListSelector;\r\n @Input() resultType: ProductRequestType = ProductRequestType.ByData;\r\n\r\n @Input() showCloseButton: boolean = false;\r\n @Input() categoryId: number = 0;\r\n @Input() fullContent: boolean = false;\r\n @Input() showFlags: boolean = true;\r\n @Input() queryParams: Params = {};\r\n @Input() boxSize: ProductBoxSize = 'default'\r\n @Input() grayBg: boolean = false;\r\n\r\n @Output() closeButtonClicked: EventEmitter = new EventEmitter();\r\n @Output() countChanged: EventEmitter = new EventEmitter();\r\n\r\n\r\n multipleViolated: boolean;\r\n productImagePathPrefix: string;\r\n culture: Culture;\r\n currencySymbol: string;\r\n discount: number;\r\n addingToCartInProgress: boolean = false;\r\n buyForm: FormGroup;\r\n decimalNumberPattern: RegExp;\r\n decimalPattern: string = '1.0-0';\r\n ext: string = '';\r\n displayModel: ProductDetailModel;\r\n displayBothPrices: boolean = false;//can be implemented as setting - future\r\n availabilitySetting: AvailabilitySetting;\r\n\r\n get variantId(): number {\r\n let res = null;\r\n if (this.product) {\r\n if (this.isWishListItem()) {\r\n return (this.product).variant.id;\r\n } else {\r\n return (this.product).variantId;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n get variantKey(): number {\r\n let res = null;\r\n if (this.product) {\r\n if (this.isWishListItem()) {\r\n return (this.product).variant.variantKey;\r\n } else {\r\n return (this.product).variantKey;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n get variantsCount(): number {\r\n let res = null;\r\n if (this.product) {\r\n if (this.isWishListItem()) {\r\n return 1;\r\n } else {\r\n return (this.product).variantsCount;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n get availability(): AvailabilitySelector {\r\n let res = null;\r\n if (this.product) {\r\n if (this.isWishListItem()) {\r\n return (this.product).variant.availability;\r\n } else {\r\n return (this.product).availability;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n get defAmount(): number {\r\n let res = null;\r\n if (this.product) {\r\n if (this.isWishListItem()) {\r\n return (this.product).count;\r\n } else {\r\n return (this.product).factor > (this.product).minQtyOrder ? (this.product).factor : (this.product).minQtyOrder;\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public get productRequestType(): typeof ProductRequestType {\r\n return ProductRequestType;\r\n }\r\n\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private cartSvc: CartService, private fb: FormBuilder,\r\n public compareSvc: CompareProductsService, private sanitizer: DomSanitizer,\r\n private wishSvc: WishListService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.availabilitySetting = this.seSvc.availabilitySetting;\r\n this.currencySymbol = this.seSvc.settings.currencies[this.seSvc.currencyId];\r\n this.decimalPattern = `1.${this.seSvc.settings.decimalSettings.ProductBox}-${this.seSvc.settings.decimalSettings.ProductBox}`;\r\n this.productImagePathPrefix = seSvc.settings.newImageServerUrl;\r\n this.decimalNumberPattern = this.seSvc.settings.validationPatterns.decimalNumber;\r\n this.culture = this.seSvc.culture;\r\n\r\n this.cartSvc.cartContentChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(\r\n () => {\r\n this.addingToCartInProgress = false;\r\n }\r\n );\r\n\r\n this.createForm();\r\n\r\n }\r\n\r\n buyKeyUp(evt: KeyboardEvent, id: string): void {\r\n if (!this.isWishListItem() &&\r\n evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n this.buy(+id);\r\n } else {\r\n const newValue = Number((evt.target).value);\r\n if (Number.isNaN(newValue)) {\r\n return;\r\n }\r\n if (this.buyForm.controls.qty.valid) {\r\n this.countChanged.emit(newValue);\r\n }\r\n }\r\n }\r\n\r\n buy(id: number): void {\r\n if (this.addingToCartInProgress) return;\r\n if (this.buyForm.invalid) return;\r\n\r\n let count = this.buyForm.get('qty').value;\r\n if (!this.isMultiple(count)) {\r\n this.multipleViolated = true;\r\n return;\r\n } else {\r\n this.multipleViolated = false;\r\n }\r\n\r\n let cart: CartItemSelectorBrief = {\r\n count: parseFloat(count),\r\n productId: id\r\n };\r\n\r\n this.addingToCartInProgress = true;\r\n this.cartSvc.addToCart(cart);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.buyForm.patchValue({\r\n qty: [this.defAmount]\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes['product']) {\r\n this.fillDisplayedProductModel();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private createForm(): void {\r\n this.buyForm = this.fb.group({\r\n qty: [1]\r\n })\r\n }\r\n\r\n addToCompare() {\r\n this.compareSvc.addProduct(this.variantId);\r\n }\r\n\r\n removeFromCompare() {\r\n this.compareSvc.removeProduct(this.variantId);\r\n }\r\n\r\n\r\n private fillDisplayedProductModel(): void {\r\n if (this.isWishListItem()) {\r\n this.fillDisplayedProductModel_WishListItem(this.product);\r\n } else {\r\n this.fillDisplayedProductModel_ProductSelector(this.product);\r\n }\r\n }\r\n\r\n private fillDisplayedProductModel_ProductSelector(data: ProductSelector): void {\r\n\r\n this.discount = (data.minPriceWithVAT / data.minBasePrice - 1) * 100;\r\n if (Math.abs(this.discount) < 1) this.discount = 0;\r\n\r\n this.ext = isLocalImagePath(data.imagePath) ? '' : '/ext';\r\n\r\n let priceRange: Array = null;\r\n if (data?.variantsCount > 1 && data.minPriceWithVAT != data.maxPriceWithVAT) {\r\n priceRange = [data.minPriceWithVAT, data.maxPriceWithVAT];\r\n }\r\n\r\n this.displayModel = {\r\n variantId: data.variantsCount > 1 || this.resultType == ProductRequestType.VariantKey ? null : data.variantId,\r\n name: data.variantsCount > 1 || this.resultType == ProductRequestType.VariantKey ? data.commonName : data.name,\r\n annotation: data.commonAnnotation,\r\n description: data.commonDescription ? this.sanitizer.bypassSecurityTrustHtml(data.commonDescription) : null,\r\n imagePath: data.imagePath ? data.imagePath : 'notfound.jpg',\r\n imageTitle: data.commonImageTitle,\r\n code: data.code,\r\n productFlags: data.commonProductFlags,\r\n images: data.images,\r\n rating: data.rating,\r\n basePrice: data.minBasePrice,\r\n priceWithVAT: data.minPriceWithVAT,\r\n priceWithVatRange: priceRange,\r\n priceWithoutVAT: data.minPriceWithoutVAT,\r\n variantKey: data.variantKey,\r\n unit: data.unit,\r\n minQtyOrder: data.minQtyOrder,\r\n maxQtyOrder: data.maxQtyOrder,\r\n factor: data.factor,\r\n qtyInStock: data.sumQtyInStock,\r\n availability: data.availability,\r\n urlToDisplay: null,\r\n isComparable: data.variantsCount < 2,\r\n variantsCount: data.variantsCount,\r\n discontinued: data.discontinued,\r\n categoryName: data.categoryName,\r\n colors: data.colors,\r\n sizes: data.sizes,\r\n };\r\n\r\n if (data.variantsCount > 1 || this.resultType == ProductRequestType.VariantKey) {\r\n this.displayModel.urlToDisplay = `/vk/${data.variantKey}`;\r\n } else {\r\n this.displayModel.urlToDisplay = `/v/${data.variantId}/${data.seoUrl}`;\r\n }\r\n\r\n this.buyForm.patchValue({\r\n qty: [this.defAmount]\r\n });\r\n this.buyForm.get('qty').setValidators([\r\n Validators.required,\r\n Validators.pattern(this.decimalNumberPattern),\r\n Validators.maxLength(5),\r\n Validators.min(this.displayModel.minQtyOrder),\r\n Validators.max(this.getMaxAmount())\r\n ]);\r\n }\r\n\r\n getMaxAmount(): number {\r\n if (!this.displayModel || !this.displayModel.maxQtyOrder) return Number.MAX_VALUE;\r\n return this.displayModel.maxQtyOrder;\r\n }\r\n\r\n isMultiple(cnt: number): boolean {\r\n if (!this.displayModel || !this.displayModel.factor || !cnt) return true;\r\n return cnt % this.displayModel.factor == 0;\r\n }\r\n\r\n addAmount(elem: HTMLInputElement): void {\r\n const step: number = parseInt((elem).step);\r\n const val: number = parseInt((elem).value);\r\n const newVal = val + step;\r\n this.buyForm.patchValue({\r\n qty: newVal\r\n });\r\n this.multipleViolated = !this.isMultiple(newVal);\r\n this.countChanged.emit(newVal);\r\n }\r\n\r\n subtractAmount(elem: HTMLInputElement): void {\r\n const step: number = parseInt((elem).step);\r\n const val: number = parseInt((elem).value);\r\n const newVal = val - step;\r\n this.buyForm.patchValue({\r\n qty: newVal\r\n });\r\n this.multipleViolated = !this.isMultiple(newVal);\r\n this.countChanged.emit(newVal);\r\n }\r\n\r\n private fillDisplayedProductModel_WishListItem(_data: IWishListSelector) {\r\n\r\n }\r\n\r\n onCloseButtonClicked() {\r\n this.closeButtonClicked.emit();\r\n }\r\n\r\n private isWishListItem(): boolean {\r\n if (this.product && (this.product).count != null && (this.product).variant) {\r\n this.decimalPattern = `1.${this.seSvc.settings.decimalSettings.Wishlist}-${this.seSvc.settings.decimalSettings.Wishlist}`;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get isOnWishList(): boolean {\r\n if (this.variantsCount < 1) return false;\r\n\r\n return this.wishSvc.isOnWishList(this.variantsCount == 1 ? this.displayModel.variantId : null, this.displayModel.variantKey)\r\n }\r\n\r\n addToWishlist(): void {\r\n if (this.variantsCount < 1) return;\r\n\r\n this.wishSvc.addItemToWishList({\r\n variantId: this.variantsCount == 1 ? this.displayModel.variantId : null,\r\n variantKey: this.displayModel.variantKey\r\n });\r\n }\r\n\r\n removeFromWishlist(): void {\r\n if (this.variantsCount < 1) return;\r\n\r\n this.wishSvc.removeFromWishList(this.variantsCount == 1 ? this.displayModel.variantId : null, this.displayModel.variantKey);\r\n }\r\n\r\n}\r\n\r\n\r\n","
\r\n \r\n\r\n
\r\n
\r\n \r\n {{displayModel?.name}}\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n {{displayModel?.categoryName}}\r\n \r\n\r\n
\r\n
\r\n {{displayModel?.colors}} {{displayModel?.colors > 1 ? sen['product-box-colors']: sen['product-box-color']}}\r\n
\r\n\r\n
\r\n {{displayModel?.sizes}} {{displayModel?.sizes > 1 ? sen['product-box-sizes']: sen['product-box-size']}}\r\n
\r\n
\r\n
\r\n
","/**\r\n * @description\r\n * Container for product-box component related stuff.\r\n * Created by petr.humplik on 04.06.2017.\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProductBoxComponent} from \"./product-box.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ValidationModule} from \"../validation/validation.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {AvailabilityModule} from \"../availability/availability.module\";\r\nimport {ProductFlagsModule} from \"../product-flags/product-flags.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ImageCacheBustModule,\r\n ReactiveFormsModule,\r\n ValidationModule,\r\n CustomPipesModule,\r\n AvailabilityModule,\r\n ProductFlagsModule\r\n ],\r\n declarations: [ProductBoxComponent],\r\n exports: [ProductBoxComponent]\r\n})\r\n\r\nexport class ProductBoxModule {}\r\n","import {\r\n Component, ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output, QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild, ViewChildren\r\n} from \"@angular/core\";\r\nimport {\r\n FilterType,\r\n ParametricFilterRequest,\r\n Translatable\r\n} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormControl, FormGroup} from \"@angular/forms\";\r\nimport {Subject} from \"rxjs\";\r\nimport {\r\n ParameterMasterSelector,\r\n ParameterSelector,\r\n ParameterValueMasterSelector\r\n} from \"../product-parameter-filter/common\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {ProductSubColorParameterFilterComponent} from \"./product-sub-color-parameter-filter.component\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-product-color-parameter-filter',\r\n templateUrl: '../../tpl/product-color-parameter-filter.html'\r\n})\r\n\r\nexport class ProductColorParameterFilterComponent extends Translatable {\r\n\r\n @ViewChild('contentTemplate') contentTemplate: TemplateRef;\r\n @ViewChild('phrase', {static: true}) phrase: ElementRef;\r\n @ViewChildren(ProductSubColorParameterFilterComponent) subFilters: QueryList = null;\r\n\r\n @Input() paramCode: string = 'color';\r\n @Input() filterTYpe: FilterType = 'category';\r\n @Output() filterChanged: EventEmitter = new EventEmitter();\r\n\r\n productParameterMasterForm: FormGroup;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n parametricFilterRequest: ParametricFilterRequest;\r\n imagePathPrefix: string;\r\n\r\n parameters: ParameterSelector[];\r\n filteredParameters: ParameterSelector[] = [];\r\n paramsOpened: [number, boolean][] = [];\r\n\r\n paramMaster: ParameterMasterSelector;\r\n\r\n constructor(public dataSvc: DataService,\r\n public seSvc: SettingsService,\r\n private catSvc: CategoryService,\r\n private fb: FormBuilder,\r\n private rend: Renderer2\r\n ) {\r\n super(dataSvc, seSvc);\r\n this.imagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n\r\n this.catSvc.filterDataChanged.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n if (this.catSvc.parameters && this.catSvc.parameters.length) {\r\n this.parameters = this.catSvc.parameters?.filter(obj => this.catSvc.paramMasters?.filter(x => x.code == 'color').some(id => id.masterParamId === obj.masterId));\r\n this.parameters?.forEach(parameter => {\r\n if (parameter) {\r\n parameter.parameterValues = parameter.parameterValues.filter(x => !x.isDisabled);\r\n }\r\n })\r\n\r\n this.paramsOpened = !this.paramsOpened ? this.parameters?.map(x => [x.id, false]) : this.paramsOpened;\r\n this.paramMaster = this.catSvc.paramMasters?.find(x => x.code == this.paramCode);\r\n this.createProductParameterForm();\r\n this.filterSubParams();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.parameters = this.catSvc.parameters?.filter(obj => this.catSvc.paramMasters?.some(id => id.masterParamId === obj.masterId));\r\n this.parameters?.forEach(parameter => {\r\n if (parameter) {\r\n parameter.parameterValues = parameter.parameterValues.filter(x => !x.isDisabled);\r\n }\r\n })\r\n this.paramsOpened = this.parameters?.map(x => [x.id, false]);\r\n this.paramMaster = this.catSvc.paramMasters?.find(x => x.code == this.paramCode);\r\n this.createProductParameterForm();\r\n this.filterSubParams();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n toggleSection(section: HTMLDivElement): void {\r\n if (/section--active/.test(section.getAttribute('class'))) {\r\n this.rend.removeClass(section, 'filter__section--active')\r\n } else {\r\n $('.filter__section').removeClass('filter__section--active');\r\n this.rend.addClass(section, 'filter__section--active');\r\n }\r\n this.filterChanged.emit();\r\n }\r\n\r\n searchKeyUp(evt: KeyboardEvent, phrase: string): void {\r\n if (evt.key === 'Enter' || evt.key == 'NumpadEnter') {\r\n this.search(phrase);\r\n }\r\n }\r\n\r\n search(phrase: string): void {\r\n this.filterSubParams(phrase);\r\n }\r\n\r\n onFormSubmit(): boolean {\r\n return false;\r\n }\r\n\r\n private createForm() {\r\n if (this.productParameterMasterForm) {\r\n return;\r\n }\r\n // Create parent FormGroup control (exist even if the product parameters are not loaded).\r\n let paramMaster: FormGroup = new FormGroup({});\r\n this.productParameterMasterForm = this.fb.group({\r\n paramMaster: paramMaster\r\n });\r\n }\r\n\r\n private createProductParameterForm(): void {\r\n this.createForm();\r\n\r\n // Clear existing FormGroup.\r\n this.productParameterMasterForm.controls['paramMaster'] = null;\r\n\r\n if (!this.paramMaster) {\r\n return;\r\n }\r\n\r\n // Create new FormGroup\r\n this.addCheckBoxes(this.paramMaster);\r\n }\r\n\r\n selectClick() {\r\n //this.catSvc.getCategoryDetailData();\r\n this.filterChanged.emit();\r\n $('.filter__section').removeClass('filter__section--active');\r\n }\r\n\r\n private addCheckBoxes(paramMaster: ParameterMasterSelector) {\r\n let controls: { [key: string]: FormControl } = {};\r\n\r\n (paramMaster.masterParamValues as ParameterValueMasterSelector[]).forEach((value) => {\r\n let checked = this.catSvc.paramFilter.isMasterValueInFilter(paramMaster.masterParamId, value.masterParamValueId);\r\n controls[value.masterParamValueId] = new FormControl({value: checked, disabled: false});\r\n });\r\n\r\n const values: FormGroup = new FormGroup(controls);\r\n const checkBoxGroup: FormGroup = new FormGroup({\r\n id: new FormControl({value: paramMaster.masterParamId, disabled: false}),\r\n values: values\r\n });\r\n\r\n checkBoxGroup.valueChanges\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((group) => {\r\n this.onFilterChanged(group);\r\n });\r\n\r\n this.productParameterMasterForm.controls['paramMaster'] = checkBoxGroup;\r\n }\r\n\r\n private onFilterChanged(group: any | null): void {\r\n if (this.createParametricFilter(group)) {\r\n this.catSvc.setParamsIntoUrl();\r\n this.filterSubParams();\r\n }\r\n }\r\n\r\n onSubFilterChanged() {\r\n this.filterChanged.emit()\r\n }\r\n\r\n private filterSubParams(phrase: string = null) {\r\n this.parametricFilterRequest = this.catSvc.paramFilter;\r\n\r\n this.filteredParameters = [];\r\n let selectedMasterValues = this.paramMaster?.masterParamValues?.filter(x => this.parametricFilterRequest?.masterValueParameters?.some(id => id.valueId === x.masterParamValueId));\r\n let filteredParamValueIds: number[] = [];\r\n selectedMasterValues?.forEach(val => {\r\n filteredParamValueIds.push(...val.valueIds);\r\n })\r\n\r\n this.parameters?.forEach((val) => {\r\n let pom = JSON.parse(JSON.stringify(val));\r\n pom.parameterValues = null;\r\n pom.parameterValues = val.parameterValues.filter(x => ((selectedMasterValues && selectedMasterValues.length > 0) ? filteredParamValueIds?.some(id => id === x.id) : true)\r\n && (phrase ? x.displayValue.toLowerCase().includes(phrase.toLowerCase()) : true));\r\n this.filteredParameters.push(pom);\r\n });\r\n\r\n this.filteredParameters.sort((a, b) => {\r\n if (a.order == null) {\r\n return 1;\r\n } else if (b.order == null) {\r\n return -1;\r\n } else {\r\n return a.order - b.order;\r\n }\r\n });\r\n\r\n if(selectedMasterValues?.length > 0 || phrase)\r\n this.paramsOpened = this.filteredParameters?.map(x => [x.id, x.parameterValues.length > 0 ]);\r\n\r\n }\r\n\r\n getActiveValuesNumber(): number {\r\n return this.catSvc.paramFilter?.exactValueParameters?.filter(item => this.parameters.some(x => x.id == item.id)).length;\r\n }\r\n\r\n createParametricFilter(group: any | null): boolean {\r\n this.parametricFilterRequest = this.catSvc.paramFilter;\r\n\r\n this.parametricFilterRequest.masterValueParameters = this.parametricFilterRequest.masterValueParameters.filter(item => item.id !== this.paramMaster.masterParamId);\r\n let control = this.productParameterMasterForm.controls['paramMaster'];\r\n let param = this.paramMaster;\r\n\r\n if (param) {\r\n // Check the value has just changed because the model is not updated at this moment.\r\n // If ...\r\n if (!!group && group.id == control.value.id) {\r\n const colorParamsNames = this.parameters.map(x=>x.id);\r\n for (let i = this.catSvc.paramFilter.exactValueParameters.length - 1; i >= 0; i--) {\r\n if (colorParamsNames.includes(this.catSvc.paramFilter.exactValueParameters[i].id)) {\r\n this.catSvc.paramFilter.exactValueParameters.splice(i, 1);\r\n }\r\n }\r\n for (let value in group.values) {\r\n\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (group.values[value] === true) {\r\n this.parametricFilterRequest.addMasterValue(param.masterParamId, parseInt(value));\r\n const values = this.paramMaster.masterParamValues.find(x=>x.masterParamValueId == parseInt(value));\r\n\r\n values.valueIds.forEach(val=>{\r\n if(this.getParamNameFormValueId(val)){\r\n this.parametricFilterRequest.addExactValue(this.getParamNameFormValueId(val), val);\r\n }\r\n });\r\n }\r\n }\r\n } else {\r\n // Check the model for previous changes\r\n for (let value in control.value.values) {\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (control.value.values[value] === true) {\r\n this.parametricFilterRequest.addMasterValue(control.value.id, parseInt(value));\r\n }\r\n }\r\n }\r\n }\r\n this.catSvc.paramFilter = this.parametricFilterRequest;\r\n //this.catSvc.pageIndex = 1;\r\n return true;\r\n }\r\n\r\n UncheckParameters() {\r\n this.paramsOpened = this.parameters?.map(x => [x.id, false]);\r\n this.paramMaster.masterParamValues = JSON.parse(JSON.stringify(this.catSvc.paramMasters?.find(x => x.code == this.paramCode).masterParamValues));\r\n\r\n const controls = (this.productParameterMasterForm.controls['paramMaster'].get('values')).controls;\r\n if (controls != null) {\r\n Object.keys(controls).forEach(key => {\r\n controls[key].patchValue(false, {emitEvent: true});\r\n });\r\n this.filterChanged.emit();\r\n }\r\n this.subFilters.forEach(x => x.UncheckParameters());\r\n $('.filter__section').removeClass('filter__section--active');\r\n }\r\n\r\n public UncheckParameter(paramId: number, paramValueId: number): void {\r\n this.subFilters.forEach(x => x.UncheckParameter(paramId, paramValueId));\r\n }\r\n\r\n get showFilter(): boolean {\r\n return this.paramMaster && this.parameters && this.parameters.some(x => x.parameterValues.length > 0);\r\n }\r\n\r\n getParamNameFormValueId(valueId: number){\r\n for(let param of this.catSvc.parameters){\r\n let v = param.parameterValues.find(x=>x.id == valueId)\r\n if(v){\r\n return v.parameterId;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n}\r\n","\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n {{paramMaster.name}}\r\n
\r\n\r\n
0\" class=\"filter__count\">\r\n {{getActiveValuesNumber()}}\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{paramMaster.name}}\r\n
\r\n\r\n
\r\n {{sen['filter-color-shade-text']}}\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
0\" class=\"filter-color-item-primary\" formGroupName=\"values\">\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {{sen['cancel-filter']}}\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{paramMaster.name}}\r\n
\r\n\r\n
\r\n {{sen['filter-color-shade-text']}}\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProductColorParameterFilterComponent} from \"./product-color-parameter-filter.component\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ProductSubColorParameterFilterComponent} from \"./product-sub-color-parameter-filter.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CustomPipesModule\r\n ],\r\n declarations: [\r\n ProductColorParameterFilterComponent,\r\n ProductSubColorParameterFilterComponent\r\n ],\r\n exports: [\r\n ProductColorParameterFilterComponent\r\n ]\r\n})\r\n\r\nexport class ProductColorParameterFilterModule {\r\n}","import {\r\n Component, ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n Renderer2, ViewChild\r\n} from \"@angular/core\";\r\nimport {FilterType, ParametricFilterRequest, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormControl, FormGroup} from \"@angular/forms\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ParameterSelector} from \"../product-parameter-filter/common\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {ParameterValueSelector} from \"../product/common\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\n\r\n@Component({\r\n selector: 'cmp-product-sub-color-parameter-filter',\r\n templateUrl: '../../tpl/product-sub-color-parameter-filter.html',\r\n})\r\n\r\nexport class ProductSubColorParameterFilterComponent extends Translatable {\r\n\r\n @ViewChild('section') section: ElementRef;\r\n\r\n @Input() parameter: ParameterSelector;\r\n @Input() filterTYpe: FilterType = 'category';\r\n @Input() opened: [number,boolean][];\r\n\r\n @Output() filterChanged: EventEmitter = new EventEmitter();\r\n @Output() openedChange: EventEmitter<[number,boolean][]> = new EventEmitter<[number,boolean][]>();\r\n\r\n\r\n productParameterForm: FormGroup;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n parametricFilterRequest: ParametricFilterRequest;\r\n imagePathPrefix: string;\r\n\r\n filterSectionHide: boolean = false;\r\n\r\n constructor(public dataSvc: DataService,\r\n public seSvc: SettingsService,\r\n private catSvc: CategoryService,\r\n private fb: FormBuilder,\r\n private rend: Renderer2\r\n ) {\r\n super(dataSvc, seSvc);\r\n this.imagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n getOpened(){\r\n return this.opened.find(x=>x[0] == this.parameter.id);\r\n }\r\n setOpened(val: boolean){\r\n this.opened.find(x=>x[0] == this.parameter.id)[1] = val;\r\n return this.opened;\r\n }\r\n ngOnInit(): void {\r\n this.createProductParameterForm();\r\n }\r\n ngAfterViewInit(): void {\r\n if (!/section--active/.test(this.section.nativeElement.getAttribute('class')) && this.getOpened()[1]) {\r\n this.rend.addClass(this.section.nativeElement, 'filter-colors-secondary__section--active');\r\n } else {\r\n this.rend.removeClass(this.section.nativeElement, 'filter-colors-secondary__section--active')\r\n this.openedChange.emit(this.setOpened(false));\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n toggleSection(section: HTMLDivElement): void {\r\n if (/section--active/.test(section.getAttribute('class'))) {\r\n this.rend.removeClass(section, 'filter-colors-secondary__section--active')\r\n this.openedChange.emit(this.setOpened(false));\r\n } else {\r\n this.rend.addClass(section, 'filter-colors-secondary__section--active');\r\n this.openedChange.emit(this.setOpened(true));\r\n }\r\n }\r\n\r\n private createForm() {\r\n if (this.productParameterForm) {\r\n return;\r\n }\r\n // Create parent FormGroup control (exist even if the product parameters are not loaded).\r\n let param: FormGroup = new FormGroup({});\r\n this.productParameterForm = this.fb.group({\r\n param: param\r\n });\r\n }\r\n\r\n private createProductParameterForm(): void {\r\n this.createForm();\r\n\r\n // Clear existing FormGroup.\r\n this.productParameterForm.controls['param'] = null;\r\n\r\n if (!this.parameter ) {\r\n this.createParametricFilter(null);\r\n return;\r\n }\r\n\r\n // Create new FormGroup\r\n this.addCheckBoxes(this.parameter);\r\n }\r\n\r\n private addCheckBoxes(parameter: ParameterSelector) {\r\n let controls: { [key: string]: FormControl } = {};\r\n\r\n (parameter.parameterValues as ParameterValueSelector[]).forEach((value) => {\r\n let checked = this.catSvc.paramFilter.isExactValueInFilter(parameter.id, value.id) && !value.isDisabled;\r\n controls[value.id] = new FormControl({value: checked, disabled: value.isDisabled});\r\n });\r\n\r\n const values: FormGroup = new FormGroup(controls);\r\n const checkBoxGroup: FormGroup = new FormGroup({\r\n id: new FormControl({value: parameter.id, disabled: parameter.isDisabled}),\r\n values: values\r\n });\r\n\r\n checkBoxGroup.valueChanges\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((group) => {\r\n this.createParametricFilter(group);\r\n });\r\n\r\n this.productParameterForm.controls['param'] = checkBoxGroup;\r\n }\r\n\r\n getActiveValuesNumber(): number{\r\n return this.catSvc.paramFilter?.exactValueParameters?.filter(item => item.id == this.parameter.id).length;\r\n }\r\n\r\n createParametricFilter(group: any | null): boolean {\r\n this.parametricFilterRequest = this.catSvc.paramFilter;\r\n\r\n this.parametricFilterRequest.exactValueParameters =this.parametricFilterRequest.exactValueParameters.filter(item => item.id !== this.parameter.id);\r\n let control = this.productParameterForm.controls['param'];\r\n let param = this.parameter;\r\n\r\n if (param && param.type == 'default') {\r\n // Check the value has just changed because the model is not updated at this moment.\r\n // If ...\r\n if (!!group && group.id == control.value.id) {\r\n for (let value in group.values) {\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (group.values[value] === true) {\r\n this.parametricFilterRequest.addExactValue(param.id, parseInt(value));\r\n }\r\n }\r\n } else {\r\n // Check the model for previous changes\r\n for (let value in control.value.values) {\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (control.value.values[value] === true) {\r\n this.parametricFilterRequest.addExactValue(control.value.id, parseInt(value));\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.catSvc.paramFilter = this.parametricFilterRequest;\r\n //this.catSvc.pageIndex = 1;\r\n this.catSvc.paramsHash = this.parametricFilterRequest.paramsHash;\r\n\r\n return true;\r\n }\r\n public UncheckParameters(): void {\r\n const controls = (this.productParameterForm.controls['param'].get('values')).controls;\r\n if (controls != null) {\r\n Object.keys(controls).forEach(key => {\r\n controls[key].patchValue(false, {emitEvent: true});\r\n });\r\n this.filterChanged.emit();\r\n }\r\n }\r\n\r\n public UncheckParameter(paramId: number, paramValueId: number): void {\r\n if (paramId == this.parameter.id) {\r\n const control = (this.productParameterForm.controls['param'].get('values')).controls[paramValueId];\r\n if (control != null) {\r\n control.patchValue(false, {emitEvent: true});\r\n this.filterChanged.emit();\r\n }\r\n }\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n {{parameter.parameterName}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","/**\r\n * Panel providing filtering by product flags, see the {@link SharedProductSettings} class, the {@Link Flags} property.\r\n * For instance flags are preserved across category navigation and cultureId changes\r\n */\r\nimport {Component, Input, TemplateRef, ViewChild} from '@angular/core';\r\nimport {ProductFlag} from \"./common\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Subject} from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'cmp-product-flags-filter',\r\n templateUrl: './product-flags-filter.html'\r\n})\r\n\r\nexport class ProductFlagsFilterComponent extends Translatable {\r\n\r\n @ViewChild('contentTemplate') contentTemplate: TemplateRef;\r\n\r\n @Input() categoryId: number;\r\n\r\n flags: ProductFlag[];\r\n\r\n private selectedFlags: number[];\r\n\r\n filterSectionHide: boolean = false;\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private catSvc: CategoryService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.catSvc.filterDataChanged.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.init();\r\n this.fillFlags();\r\n this.checkDisabled();\r\n });\r\n\r\n this.init();\r\n\r\n }\r\n\r\n private init(): void {\r\n this.selectedFlags = this.catSvc.getSelectedFlags();\r\n }\r\n\r\n private checkDisabled(): void {\r\n if (!this.flags) {\r\n return;\r\n }\r\n\r\n this.flags.forEach((flag) => {\r\n if (this.selectedFlags && this.selectedFlags.indexOf(flag.id) > -1 && flag.isDisabled) {\r\n this.selectedFlags = this.selectedFlags.filter(s => s != flag.id);\r\n }\r\n });\r\n\r\n this.catSvc.setSelectedFlags(this.selectedFlags);\r\n }\r\n\r\n flagChanged(id: number, checked: boolean): void {\r\n\r\n let index = this.selectedFlags.indexOf(id);\r\n\r\n if (checked && index == -1) this.selectedFlags.push(id);\r\n else if (index >= 0) this.selectedFlags.splice(index, 1);\r\n\r\n this.catSvc.setSelectedFlags(this.selectedFlags);\r\n\r\n this.catSvc.pageIndex = 1;\r\n this.catSvc.getCategoryDetailData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private fillFlags() {\r\n if (!this.flags || !this.flags.length) {\r\n this.flags=[];\r\n }\r\n\r\n this.catSvc.productFlags?.forEach((f) => {\r\n let localFlag = this.flags.find(lf => lf.id == f.id);\r\n if (localFlag) {\r\n localFlag.productCount = f.productsCount;\r\n } else {\r\n localFlag = {\r\n id: f.id,\r\n name: f.name,\r\n productCount: f.productsCount,\r\n isDisabled: false,\r\n order: f.order\r\n };\r\n this.flags.push(localFlag);\r\n this.orderFlags();\r\n }\r\n if (localFlag.productCount == 0) {\r\n localFlag.isDisabled = true;\r\n } else {\r\n localFlag.isDisabled = false;\r\n }\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n private orderFlags() {\r\n this.flags.sort((a, b) => {\r\n if (a.order < b.order) {\r\n return -1;\r\n } else if (a.order > b.order) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n}\r\n","\r\n
\r\n
\r\n {{sen['filter-flag-title']}}\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n -1\" [disabled]=\"flag.isDisabled\">\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","/**\r\n * Created by vladimir.cimprich on 19.10.2017.\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {ProductFlagsFilterComponent} from \"./product-flags-filter.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n\r\n declarations: [\r\n ProductFlagsFilterComponent\r\n ],\r\n exports: [\r\n ProductFlagsFilterComponent\r\n ]\r\n})\r\n\r\nexport class ProductFlagsFilterModule {\r\n}\r\n","/**\r\n * Panel providing filtering by product flags, see the {@link SharedProductSettings} class, the {@Link Flags} property.\r\n * For instance flags are preserved across category navigation and cultureId changes\r\n */\r\nimport {Component, Input, OnChanges} from '@angular/core';\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {ProductDetailModel} from \"../product/common\";\r\n\r\n@Component({\r\n selector: 'cmp-product-flags',\r\n templateUrl: './product-flags.html'\r\n})\r\n\r\nexport class ProductFlagsComponent extends Translatable implements OnChanges {\r\n\r\n @Input() isDetail = false;\r\n @Input() displayModel: ProductDetailModel;\r\n @Input() showFlags: boolean = true;\r\n\r\n showMainDiv: any;\r\n showDiscontinuedDiv: any;\r\n showVariantsCount: any;\r\n\r\n\r\n get isBuyable(): boolean {\r\n return !!!this.displayModel?.discontinued;\r\n }\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n ngOnChanges(/*changes: SimpleChanges*/): void {\r\n this.setConditions();\r\n }\r\n\r\n private setConditions(): void {\r\n if(!this.displayModel?.productFlags||!this.displayModel?.productFlags?.length){\r\n this.showMainDiv=false;\r\n return;\r\n }\r\n if (this.isDetail) {\r\n //pokud jsme na detailu tak se nemaji zobrazovat pocty variant\r\n this.showVariantsCount = false;\r\n //hlavni div se ma zobrazit, jen pokud produkt neni discontinued\r\n if (this.displayModel?.discontinued) {\r\n this.showMainDiv = false;\r\n this.showDiscontinuedDiv = true;\r\n } else {\r\n this.showMainDiv = (this.displayModel.productFlags && this.displayModel.productFlags.length);\r\n this.showDiscontinuedDiv = false;\r\n }\r\n } else {\r\n //pokud nejsme na detailu tak main div se ma zobrazit pokud to neni zakazano pomoci showFlags=false\r\n //nebo pokud produkt neni discontinued\r\n this.showMainDiv = !!this.showFlags && (this.displayModel.productFlags && this.displayModel.productFlags.length);\r\n this.showVariantsCount = true;\r\n this.showDiscontinuedDiv = false;\r\n if (this.displayModel?.discontinued) {\r\n this.showMainDiv = false;\r\n this.showDiscontinuedDiv = true;\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n \r\n\r\n {{flag.name}}\r\n \r\n \r\n\r\n {{flag.name}}\r\n \r\n
\r\n\r\n\r\n \r\n
1\">\r\n \r\n {{displayModel.variantsCount}} {{sen['product-box-variants-2-4']}}\r\n \r\n\r\n 4\">\r\n {{displayModel.variantsCount}} {{sen['product-box-variants-5']}}\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{sen['product-discontinued']}}\r\n
\r\n
","/**\r\n * Created by vladimir.cimprich on 19.10.2017.\r\n */\r\n\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {ProductFlagsComponent} from \"./product-flags.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n\r\n declarations: [\r\n ProductFlagsComponent\r\n ],\r\n exports: [\r\n ProductFlagsComponent\r\n ]\r\n})\r\n\r\nexport class ProductFlagsModule {\r\n}\r\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {ProductVariantDetailSelector} from \"../product/common\";\r\nimport {ProductVariantBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {PageChangedInfo} from \"../pagination/common\";\r\nimport {ScrollHelper} from \"../../helpers/scroll.helper\";\r\nimport {ProductVariantsParametersFilterService} from \"../product-variants-parameters-filter/product-variants-parameters-filter.service\";\r\nimport {Router} from \"@angular/router\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-article-product-list',\r\n templateUrl: './article-product-list.html',\r\n styleUrls: ['../../assets/styles/2-components/product-panel.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ArticleProductListComponent extends Translatable {\r\n\r\n private _items: ProductVariantDetailSelector[];\r\n\r\n @Input()\r\n set products(value: ProductVariantDetailSelector[]) {\r\n this._items = this.translateProducts(value);\r\n this.pageIndex = 1;\r\n this.getProductPagePage();\r\n }\r\n\r\n get products(): ProductVariantDetailSelector[] {\r\n return this._items;\r\n }\r\n\r\n @Input() pageSize: number = 10;\r\n productPage: ProductVariantDetailSelector[];\r\n pageIndex: number;\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n public filterSvc: ProductVariantsParametersFilterService, private router:Router) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n private translateProducts(items: ProductVariantDetailSelector[]): ProductVariantDetailSelector[] {\r\n if (!items) return items;\r\n return items.map(itm => {\r\n itm.colorCoatingEffect = this.colorCoatingEffect(itm);\r\n return itm;\r\n })\r\n }\r\n\r\n private colorCoatingEffect(item: ProductVariantDetailSelector): string {\r\n let res = null;\r\n if (item) {\r\n let arr: string[] = [];\r\n if (item.color && !item.effect) {\r\n arr.push(item.color)\r\n }\r\n if (item.coating) {\r\n arr.push(item.coating)\r\n }\r\n if (item.effect) {\r\n arr.push(item.effect)\r\n }\r\n res = arr.join('/');\r\n }\r\n return res;\r\n }\r\n\r\n pageChanged(event: PageChangedInfo): void {\r\n if (event.page != this.pageIndex) {\r\n this.pageIndex = event.page;\r\n this.getProductPagePage();\r\n ScrollHelper.scrollToAnchor('cmp-article-product-list');\r\n }\r\n }\r\n\r\n getProductPagePage(): void {\r\n if (this.products) {\r\n const startIdx = (this.pageIndex - 1) * this.pageSize < this.products.length ? (this.pageIndex - 1) * this.pageSize : Math.floor(this.products.length / this.pageSize);\r\n this.productPage = this.products.slice(startIdx, startIdx + this.pageSize);\r\n } else {\r\n this.productPage = null;\r\n }\r\n }\r\n\r\n sortChanged(): void {\r\n this.sort()\r\n this.pageIndex = 1;\r\n this.getProductPagePage();\r\n }\r\n\r\n sort() {\r\n this.products.sort((a, b) => {\r\n let result = 0;\r\n switch (this.filterSvc.orderByIndex) {\r\n case 2: //color asc\r\n result = a.colorCoatingEffect > b.colorCoatingEffect ? 1 : a.colorCoatingEffect < b.colorCoatingEffect ? -1 : 0\r\n break;\r\n case 3: //color desc\r\n result = a.colorCoatingEffect < b.colorCoatingEffect ? 1 : a.colorCoatingEffect > b.colorCoatingEffect ? -1 : 0\r\n break;\r\n case 4: //application asc\r\n result = a.application > b.application ? 1 : a.application < b.application ? -1 : 0\r\n break;\r\n case 5: //application desc\r\n result = a.application < b.application ? 1 : a.application > b.application ? -1 : 0\r\n break;\r\n case 6: //size asc\r\n result = a.size > b.size ? 1 : a.size < b.size ? -1 : 0\r\n break;\r\n case 7: //size desc\r\n result = a.size < b.size ? 1 : a.size > b.size ? -1 : 0\r\n break;\r\n }\r\n return result;\r\n })\r\n }\r\n\r\n onVariantClick(item: ProductVariantBriefSelector): void {\r\n this.router.navigateByUrl(`/v/${item.id}/${item.seoUrl}`).then();\r\n }\r\n}","
\r\n
\r\n

\r\n {{sen['news-detail-products-title']}}\r\n

\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n
\r\n
","/**\r\n * @description\r\n * Product listing in catalogue. Switchable grid / list.\r\n */\r\nimport {Component, Input, ViewEncapsulation} from '@angular/core';\r\nimport {ProductRequestType, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {ProductSelector} from \"../product/common\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ProductBoxSize} from \"../product-box/common\";\r\nimport {Params} from \"@angular/router\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-product-list',\r\n templateUrl: '../../tpl/product-list.html',\r\n styleUrls: ['../../assets/styles/2-components/product-list.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ProductListComponent extends Translatable {\r\n\r\n\r\n private _products: Array = null;\r\n @Input() set products(value: ProductSelector[]) {\r\n this._products = value;\r\n }\r\n\r\n get products(): ProductSelector[] {\r\n return this._products;\r\n }\r\n\r\n @Input() isInCategory: boolean;\r\n @Input() cultureId: number;\r\n @Input() styleClass: string;\r\n @Input() modificator: string;\r\n @Input() queryParams: Params = {};\r\n @Input() boxSize : ProductBoxSize = 'default'\r\n @Input() grayBg: boolean = false;\r\n @Input() resultType: ProductRequestType = ProductRequestType.ByData;\r\n\r\n categoryId: number;\r\n currencyCode: string;\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private catSvc: CategoryService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.currencyCode = seSvc.culture.currencyCode;\r\n this.cultureId = this.catSvc.cultureId;\r\n this.categoryId = this.catSvc.categoryId;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.isInCategory) {\r\n if (this.catSvc.products) {\r\n this.products = this.catSvc.products.products;\r\n }\r\n this.cultureId = this.catSvc.cultureId;\r\n this.categoryId = this.catSvc.categoryId;\r\n }\r\n\r\n\r\n if (this.isInCategory) {\r\n this.catSvc.productDataChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.cultureId = this.catSvc.cultureId;\r\n this.categoryId = this.catSvc.categoryId;\r\n if (this.catSvc.products) {\r\n this.resultType = this.catSvc.products.resultType\r\n this.products = this.catSvc.products.products;\r\n } else {\r\n this.products = null;\r\n this.resultType = ProductRequestType.ByData;\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n
0\">\r\n \r\n \r\n \r\n
\r\n","/**\r\n * Created by petr.humplik on 11.07.2017.\r\n */\r\nimport {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProductBoxModule} from \"../product-box/product-box.module\";\r\nimport {HelperComponentsModule} from \"../helper-components/helper-components.module\";\r\nimport {ProductListComponent} from \"./product-list.component\";\r\nimport {AlertModule} from \"../alert/alert.module\";\r\nimport {ArticleProductListComponent} from \"./article-product-list.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {ProductVariantsModule} from \"../product-variants/product-variants.module\";\r\nimport {FlexPaginationModule} from \"../pagination/pagination.module\";\r\nimport {PaginatorModule} from \"../paginator/paginator.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n ProductBoxModule,\r\n HelperComponentsModule,\r\n AlertModule,\r\n ProductVariantsModule,\r\n FlexPaginationModule,\r\n PaginatorModule\r\n ],\r\n declarations: [\r\n ProductListComponent,\r\n ArticleProductListComponent\r\n ],\r\n exports: [\r\n ProductListComponent,\r\n ArticleProductListComponent\r\n ]\r\n})\r\n\r\nexport class ProductListModule {\r\n}\r\n","/**\r\n * @file Declares and defines common types for the product parameters filter.\r\n * @author Vladimir Cimprich\r\n */\r\n\r\n\r\nimport {ParameterValueSelector} from \"../product/common\";\r\nimport {AbstractControl} from \"@angular/forms\";\r\n\r\n/**\r\n * @description Represents minimum and maximum value ranges.\r\n */\r\nexport class ValueRangeSelector {\r\n //min?: number;\r\n //max?: number;\r\n values: Array;\r\n\r\n checkAndModifyRange(control: AbstractControl): boolean {\r\n\r\n let from = parseFloat(control.value.from);\r\n if (Number.isNaN(from)) {\r\n from = null;\r\n }\r\n\r\n let to = parseFloat(control.value.to);\r\n if (Number.isNaN(to)) {\r\n to = null;\r\n }\r\n\r\n let value: RangeFormValue = {id: control.value.id, from: from, to: to};\r\n\r\n let rangeValid = ValueRangeSelector.rangeIsValid(value.from, value.to, this.values);\r\n if (rangeValid) {\r\n return true;\r\n }\r\n\r\n\r\n //range is not valid\r\n let safetyBrake = 0;\r\n while (!rangeValid && safetyBrake < 1000) {\r\n ValueRangeSelector.findClosestValues(value, this.values);\r\n control.setValue(value);\r\n rangeValid = ValueRangeSelector.rangeIsValid(value.from, value.to, this.values);\r\n safetyBrake++;\r\n }\r\n\r\n return rangeValid;\r\n }\r\n\r\n static findClosestValues(rangeValue: RangeFormValue, values: Array): void {\r\n if (!values) {\r\n return;\r\n }\r\n\r\n //lower value is set, higher is not\r\n //means we have to find first lower value for from field\r\n if (!(rangeValue.from == undefined || rangeValue.from == null) && (rangeValue.to == undefined || rangeValue.to == null)) {\r\n let reversed = values.reverse();\r\n let lower = reversed.find(n => n < rangeValue.from);\r\n rangeValue.from = lower;\r\n return;\r\n }\r\n\r\n\r\n //higher value is set, lower is not\r\n //means we have to find first higher value for to field\r\n if ((rangeValue.from == undefined || rangeValue.from == null) && !(rangeValue.to == undefined || rangeValue.to == null)) {\r\n let higher = values.find(n => n > rangeValue.to);\r\n rangeValue.to = higher;\r\n return;\r\n }\r\n\r\n\r\n //lower value is set, higher value is set\r\n //means we have to find which one to correct\r\n if (!(rangeValue.from == undefined || rangeValue.from == null) && !(rangeValue.to == undefined || rangeValue.to == null)) {\r\n let higher = values.find(n => n > rangeValue.to);\r\n let reversed = values.reverse();\r\n let lower = reversed.find(n => n < rangeValue.from);\r\n\r\n if ((lower == null || lower == undefined) && (higher == null || higher == undefined)) {\r\n //could not find any suitable values\r\n //this alternative should not be reached in real circumstancies\r\n rangeValue.from = null;\r\n rangeValue.to = null;\r\n return;\r\n }\r\n\r\n if (!(lower == null || lower == undefined) && (higher == null || higher == undefined)) {\r\n rangeValue.from = lower;\r\n return;\r\n }\r\n\r\n if ((lower == null || lower == undefined) && !(higher == null || higher == undefined)) {\r\n rangeValue.to = higher;\r\n return;\r\n }\r\n\r\n let hDiff = higher - rangeValue.to;\r\n let lDiff = rangeValue.from - lower;\r\n\r\n if (lDiff < hDiff) {\r\n rangeValue.from = lower;\r\n return;\r\n }\r\n\r\n rangeValue.to = higher;\r\n return;\r\n }\r\n }\r\n\r\n get min(): number {\r\n if (!this.values) {\r\n return null;\r\n }\r\n\r\n return Math.min(...this.values);\r\n }\r\n\r\n get max(): number {\r\n if (!this.values) {\r\n return null;\r\n }\r\n\r\n return Math.max(...this.values);\r\n }\r\n\r\n\r\n static rangeIsValid(low: number, high: number, values: Array): boolean {\r\n if (!values) {\r\n return null;\r\n }\r\n\r\n if ((low == null || low == undefined) && (high == null || high == undefined)) {\r\n return true;\r\n }\r\n\r\n\r\n if (!(low == null || low == undefined) && (high == null || high == undefined)) {\r\n let anyValue = values.find(v => v >= low);\r\n if (anyValue != null && anyValue != undefined) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n if ((low == null || low == undefined) && !(high == null || high == undefined)) {\r\n let anyValue = values.find(v => v <= high);\r\n if (anyValue != null && anyValue != undefined) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n if (!(low == null || low == undefined) && !(high == null || high == undefined)) {\r\n let anyValue = values.find(v => v >= low && v <= high);\r\n if (anyValue != null && anyValue != undefined) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport interface RangeFormValue {\r\n id: number;\r\n from: number;\r\n to: number;\r\n}\r\n\r\nexport enum ParamSearchPresentation {\r\n Default = \"default\",\r\n Checkbox = \"checkbox\",\r\n Input = \"input\",\r\n Multiselect = \"multiselect\",\r\n Posuvnik = \"posuvnik\",\r\n Scrollbox = \"scrollbox\",\r\n Select = \"select\"\r\n}\r\n\r\n/**\r\n * @description Represents the one product parameter with the values for a filter of the products in given category.\r\n */\r\nexport interface ParameterSelector {\r\n id: number;\r\n parameterName: string;\r\n description: string;\r\n code: string;\r\n accId: string;\r\n unit: string;\r\n type: ParamSearchPresentation;\r\n range: ValueRangeSelector;\r\n parameterValues: Array;\r\n isDisabled: boolean;\r\n isMinInvalid: boolean;\r\n isMaxInvalid: boolean;\r\n productCount: number;\r\n masterId: number;\r\n opened?: boolean;\r\n order?: number;\r\n}\r\n\r\n\r\nexport interface ParameterMasterSelector {\r\n masterParamId: number;\r\n name: string;\r\n code: string;\r\n paramNamesIds: Array;\r\n masterParamValues: Array;\r\n}\r\n\r\nexport interface ParameterValueMasterSelector{\r\n count: number;\r\n masterParamValueId: number;\r\n name: string;\r\n value: string;\r\n valueIds: Array;\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild\r\n} from \"@angular/core\";\r\nimport {FilterType, ParametricFilterRequest, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormControl, FormGroup} from \"@angular/forms\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ParameterSelector} from \"./common\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {ParameterValueSelector} from \"../product/common\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-product-parameter-filter',\r\n templateUrl: '../../tpl/product-parameter-filter.html'\r\n})\r\n\r\nexport class ProductParameterFilterComponent extends Translatable {\r\n\r\n @ViewChild('contentTemplate') contentTemplate: TemplateRef;\r\n\r\n @Input() paramCode: string = null;\r\n @Input() filterTYpe: FilterType = 'category';\r\n @Input() filterByValueClick: boolean = false;\r\n @Output() filterChanged: EventEmitter = new EventEmitter();\r\n @Output() filterOpened: EventEmitter = new EventEmitter();\r\n\r\n productParameterForm: FormGroup;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n parametricFilterRequest: ParametricFilterRequest;\r\n imagePathPrefix: string;\r\n componentName: string;\r\n\r\n parameter: ParameterSelector;\r\n\r\n constructor(public dataSvc: DataService,\r\n public seSvc: SettingsService,\r\n private catSvc: CategoryService,\r\n private fb: FormBuilder,\r\n private rend: Renderer2\r\n ) {\r\n super(dataSvc, seSvc);\r\n this.imagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n\r\n this.catSvc.filterDataChanged.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n if (this.catSvc.parameters && this.catSvc.parameters.length) {\r\n this.parameter = this.catSvc.parameters.find(x => x.code == this.paramCode);\r\n if (this.parameter) {\r\n this.parameter.parameterValues = this.parameter.parameterValues.filter(x => !x.isDisabled);\r\n }\r\n this.createProductParameterForm();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.parameter = this.catSvc.parameters?.find(x => x.code == this.paramCode);\r\n if (this.parameter) {\r\n this.parameter.parameterValues = this.parameter.parameterValues.filter(x => !x.isDisabled);\r\n }\r\n this.createProductParameterForm();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n toggleSection(section: HTMLDivElement): void {\r\n if (/section--active/.test(section.getAttribute('class'))) {\r\n this.rend.removeClass(section, 'filter__section--active');\r\n } else {\r\n $('.filter__section').removeClass('filter__section--active');\r\n this.rend.addClass(section, 'filter__section--active');\r\n this.filterOpened.emit(this.paramCode);\r\n }\r\n this.filterChanged.emit();\r\n }\r\n\r\n private createForm() {\r\n if (this.productParameterForm) {\r\n return;\r\n }\r\n\r\n // Create parent FormGroup control (exist even if the product parameters are not loaded).\r\n let param: FormGroup = new FormGroup({});\r\n this.productParameterForm = this.fb.group({\r\n param: param\r\n });\r\n }\r\n\r\n private createProductParameterForm(): void {\r\n // console.log('ProductParameterFilter.createProductParameterForm', this.paramCode, this.parameter);\r\n this.createForm();\r\n\r\n // Clear existing FormGroup.\r\n this.productParameterForm.controls['param'] = null;\r\n\r\n if (!this.parameter) {\r\n if (this.createParametricFilter(null)) {\r\n this.filterChanged.emit();\r\n }\r\n\r\n return;\r\n }\r\n // Create new FormGroup\r\n this.addCheckBoxes(this.parameter);\r\n }\r\n\r\n private addCheckBoxes(parameter: ParameterSelector) {\r\n // console.log('ProductParameterFilter.addCheckBoxes', this.paramCode, this.parameter);\r\n let controls: { [key: string]: FormControl } = {};\r\n\r\n (parameter.parameterValues as ParameterValueSelector[]).forEach((value) => {\r\n let checked = this.catSvc.paramFilter.isExactValueInFilter(parameter.id, value.id) && !value.isDisabled;\r\n controls[value.id] = new FormControl({value: checked, disabled: value.isDisabled});\r\n });\r\n\r\n const values: FormGroup = new FormGroup(controls);\r\n const checkBoxGroup: FormGroup = new FormGroup({\r\n id: new FormControl({value: parameter.id, disabled: parameter.isDisabled}),\r\n values: values\r\n });\r\n\r\n checkBoxGroup.valueChanges\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((group) => {\r\n this.createParametricFilter(group)\r\n });\r\n\r\n this.productParameterForm.controls['param'] = checkBoxGroup;\r\n }\r\n\r\n selectClick() {\r\n $('.filter__section').removeClass('filter__section--active');\r\n this.filterChanged.emit();\r\n }\r\n\r\n getActiveValuesNumber(): number {\r\n return this.catSvc.paramFilter?.exactValueParameters?.filter(item => item.id == this.parameter.id).length;\r\n }\r\n\r\n createParametricFilter(group: any | null): boolean {\r\n this.parametricFilterRequest = this.catSvc.paramFilter;\r\n\r\n this.parametricFilterRequest.exactValueParameters = this.parametricFilterRequest.exactValueParameters.filter(item => item.id !== this.parameter?.id);\r\n let control = this.productParameterForm.controls['param'];\r\n let param = this.parameter;\r\n\r\n if (param && param.type == 'default') {\r\n // Check the value has just changed because the model is not updated at this moment.\r\n // If ...\r\n if (!!group && group.id == control.value.id) {\r\n for (let value in group.values) {\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (group.values[value] === true) {\r\n this.parametricFilterRequest.addExactValue(param.id, parseInt(value));\r\n }\r\n }\r\n } else {\r\n // Check the model for previous changesF\r\n for (let value in control.value.values) {\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (control.value.values[value] === true) {\r\n this.parametricFilterRequest.addExactValue(control.value.id, parseInt(value));\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.catSvc.paramFilter = this.parametricFilterRequest;\r\n //this.catSvc.pageIndex = 1;\r\n this.catSvc.paramsHash = this.parametricFilterRequest.paramsHash;\r\n if (this.filterByValueClick) this.filterChanged.emit();\r\n\r\n return true;\r\n }\r\n\r\n public UncheckParameter(paramId: number, paramValueId: number): void {\r\n if (paramId == this.parameter.id) {\r\n const control = (this.productParameterForm.controls['param'].get('values')).controls[paramValueId];\r\n if (control != null) {\r\n control.patchValue(false, {emitEvent: true});\r\n this.filterChanged.emit();\r\n } else {\r\n //remove parameter from exactValueInFilter manually\r\n this.catSvc.paramFilter.exactValueParameters = this.catSvc.paramFilter.exactValueParameters.filter(x => !(x.id == paramId && x.valueId == paramValueId));\r\n this.filterChanged.emit();\r\n }\r\n }\r\n }\r\n\r\n public UncheckParameters(): void {\r\n let param: FormGroup = new FormGroup({});\r\n this.productParameterForm = this.fb.group({\r\n param: param\r\n });\r\n this.catSvc.paramFilter.exactValueParameters = this.catSvc.paramFilter.exactValueParameters.filter(item => item.id !== this.parameter?.id);\r\n this.createProductParameterForm();\r\n $('.filter__section').removeClass('filter__section--active');\r\n this.filterChanged.emit();\r\n }\r\n\r\n public UncheckAllParameters(): void {\r\n this.parametricFilterRequest.clear();\r\n this.catSvc.paramFilter = this.parametricFilterRequest;\r\n this.filterChanged.emit();\r\n }\r\n}\r\n","\r\n 0\">\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n {{parameter.parameterName}}\r\n
\r\n\r\n
0\" class=\"filter__count body-text\">\r\n {{getActiveValuesNumber()}}\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {{sen['cancel-filter']}}\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n {{parameter.parameterName}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProductParameterFilterComponent} from \"./product-parameter-filter.component\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CustomPipesModule\r\n ],\r\n declarations: [\r\n ProductParameterFilterComponent\r\n ],\r\n exports: [\r\n ProductParameterFilterComponent\r\n ]\r\n})\r\n\r\nexport class ProductParameterFilterModule {\r\n}","import {IActiveParam, IActiveParamName} from \"./common\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {ParameterService} from \"../../services/parameter.service\";\r\n\r\nexport class CategoryParameterManager {\r\n\r\n constructor(private catSvc: CategoryService, private parSvc: ParameterService) {\r\n\r\n }\r\n\r\n public Create(): IActiveParamName[] {\r\n const params: IActiveParam[] = this.catSvc.paramFilter.exactValueParameters\r\n .map(p => {\r\n const paramName = this.catSvc.parameters.find(x => x.id === p.id);\r\n const paramValue = paramName.parameterValues.find(x => x.id === p.valueId);\r\n\r\n const activeParam: IActiveParam = {\r\n ParamName: paramName.parameterName,\r\n ParamNameId: paramName.id,\r\n ParamValue: paramValue.displayValue,\r\n ParamValueId: paramValue.id\r\n };\r\n\r\n return activeParam;\r\n });\r\n\r\n let pars: IActiveParamName[] = [];\r\n\r\n params.forEach((item) => {\r\n let pn: IActiveParamName = pars.find(x => x.Id === item.ParamNameId);\r\n\r\n if (!pn) {\r\n pn = {\r\n Id: item.ParamNameId,\r\n Label: item.ParamName,\r\n Values: []\r\n };\r\n pars.push(pn);\r\n }\r\n let num = parseFloat(item.ParamValue);\r\n pn.Values.push({\r\n Id: item.ParamValueId,\r\n Label: isNaN(num) ? item.ParamValue : this.parSvc.formatValue(item.ParamValue, true, 2)\r\n });\r\n });\r\n\r\n pars.sort((a: IActiveParamName, b: IActiveParamName) => {\r\n if (a.Label < b.Label) return -1;\r\n else if (a.Label > b.Label) return 1;\r\n else return 0;\r\n });\r\n\r\n return pars;\r\n }\r\n\r\n}","import {Component, EventEmitter, Input, Output, SimpleChanges, ViewEncapsulation} from '@angular/core';\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {IActiveParamName} from \"./common\";\r\nimport {CategoryParameterManager} from \"./CategoryPrameterMamager\";\r\nimport {ParameterService} from \"../../services/parameter.service\";\r\n\r\n@Component({\r\n selector: 'cmp-product-parameters-filter-active',\r\n templateUrl: '../../tpl/product-parameters-filter-active.html',\r\n styleUrls: ['../../assets/styles/2-components/active-filters.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ProductParametersFilterActiveComponent extends Translatable {\r\n\r\n @Input() filterService: CategoryService;\r\n\r\n @Output() uncheckParameter: EventEmitter<{nameId: number, valueId: number}> = new EventEmitter<{nameId: number, valueId: number}>();\r\n @Output() uncheckAllParameter: EventEmitter = new EventEmitter();\r\n public activeParams: IActiveParamName[];\r\n\r\n private paramManager: CategoryParameterManager;\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService, private parSvc: ParameterService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['filterService']) {\r\n this.ngUnsubscribe.next();\r\n\r\n this.paramManager = new CategoryParameterManager(this.filterService, this.parSvc);\r\n\r\n this.filterService.productDataChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.updateActiveFilters();\r\n });\r\n }\r\n }\r\n\r\n private updateActiveFilters(): void {\r\n this.activeParams = this.paramManager.Create();\r\n }\r\n\r\n parameter_click(nameId: number, valueId: number): void {\r\n this.uncheckParameter.emit({nameId, valueId});\r\n }\r\n\r\n public removeAllFilters(): void {\r\n this.uncheckAllParameter.emit();\r\n }\r\n}\r\n","
0\">\r\n \r\n \r\n \r\n\r\n \r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProductParametersFilterActiveComponent} from \"./product-parameters-filter-active.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule\r\n ],\r\n declarations: [\r\n ProductParametersFilterActiveComponent\r\n ],\r\n exports: [\r\n ProductParametersFilterActiveComponent\r\n ]\r\n})\r\n\r\nexport class ProductParametersFilterActiveModule {\r\n}","import {Component, ElementRef, EventEmitter, Input, NgZone, Output, SimpleChanges} from \"@angular/core\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ISlider} from \"./common\";\r\nimport {ParameterValueSelector} from \"../product/common\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-parameter-slider',\r\n template: '
'\r\n})\r\nexport class ParameterSliderComponent {\r\n\r\n @Input() paramValues: Array = [];\r\n\r\n private min: number = 0;\r\n private max: number = 100;\r\n\r\n @Input() rangeFrom: number = 0;\r\n @Input() rangeTo: number = 100;\r\n\r\n\r\n @Output() slideStop: EventEmitter = new EventEmitter();\r\n @Output() slideStart: EventEmitter = new EventEmitter();\r\n @Output() slideChange: EventEmitter = new EventEmitter();\r\n\r\n private sliderInstance: ISlider;\r\n private cmpInit: boolean = false;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n get range(): number[] {\r\n return [this.rangeFrom, this.rangeTo];\r\n }\r\n\r\n set range(values: number[]) {\r\n if (values && values.length == 2) {\r\n this.rangeFrom = values[0];\r\n this.rangeTo = values[1];\r\n }\r\n }\r\n\r\n get minMax(): number[] {\r\n return [this.min, this.max];\r\n }\r\n\r\n set minMax(values: number[]) {\r\n if (values && values.length == 2) {\r\n this.min = values[0];\r\n this.max = values[1];\r\n }\r\n }\r\n\r\n constructor(private elRef: ElementRef, private ngZone: NgZone) {\r\n }\r\n\r\n ngOnInit() {\r\n this.max = this.paramValues.length-1;\r\n this.slideStop.emit([this.rangeFrom,this.rangeTo]);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.max = this.paramValues.length-1;\r\n this.slideStop.emit([this.rangeFrom,this.rangeTo]);\r\n\r\n if (this.cmpInit && !this.sliderInstance) {\r\n this.ngAfterViewInit();\r\n }\r\n\r\n if (this.sliderInstance) {\r\n if (changes.rangeFrom && changes.rangeFrom.currentValue && changes.rangeFrom.currentValue != changes.rangeFrom.previousValue) {\r\n this.sliderInstance.values(0, changes.rangeFrom.currentValue);\r\n this.sliderInstance.destroy();\r\n this.ngAfterViewInit();\r\n }\r\n\r\n if (changes.rangeTo && changes.rangeTo.currentValue && changes.rangeTo.currentValue != changes.rangeTo.previousValue) {\r\n this.sliderInstance.values(1, changes.rangeTo.currentValue);\r\n this.sliderInstance.destroy();\r\n this.ngAfterViewInit();\r\n }\r\n\r\n if (this.min > this.rangeFrom) {\r\n this.rangeFrom = this.min;\r\n this.sliderInstance.values(0, this.rangeFrom);\r\n this.sliderInstance.destroy();\r\n this.ngAfterViewInit();\r\n }\r\n if (this.max <= this.rangeTo) {\r\n this.rangeTo = this.max;\r\n this.sliderInstance.values(1, this.rangeTo);\r\n this.sliderInstance.destroy();\r\n this.ngAfterViewInit();\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n $(this.elRef.nativeElement).find('div').slider({\r\n range: true,\r\n min: Math.floor(Math.min(this.min, this.rangeFrom)),\r\n max: Math.ceil(Math.max(this.max, this.rangeTo)),\r\n values: [this.rangeFrom, this.rangeTo],\r\n start: () => {\r\n this.ngZone.run(() => {\r\n this.slideStart.emit();\r\n });\r\n },\r\n stop: (_event: any, _ui: any) => {\r\n this.ngZone.run(() => {\r\n this.slideStop.emit(this.sliderInstance.values());\r\n });\r\n },\r\n slide: (_event: any, ui: any) => {\r\n this.ngZone.run(() => {\r\n let values: number[] = [null, null];\r\n values[ui.handleIndex] = ui.value;\r\n if (ui.values[1 - ui.handleIndex] !== this.minMax[1 - ui.handleIndex]) {\r\n values[1 - ui.handleIndex] = ui.values[1 - ui.handleIndex];\r\n }\r\n\r\n this.slideChange.emit(values);\r\n this.rangeFrom = values[0];\r\n this.rangeTo = values[1];\r\n });\r\n },\r\n });\r\n\r\n this.sliderInstance = $(this.elRef.nativeElement).find('div').slider('instance');\r\n this.cmpInit = true;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sliderInstance) {\r\n this.sliderInstance.destroy();\r\n }\r\n\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n}","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from \"@angular/core\";\r\nimport {ParametricFilterRequest, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormBuilder, FormControl, FormGroup} from \"@angular/forms\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ParameterSelector} from \"../product-parameter-filter/common\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {ParameterValueSelector} from \"../product/common\";\r\nimport {ParameterService} from \"../../services/parameter.service\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-product-size-parameter-filter',\r\n templateUrl: '../../tpl/product-size-parameter-filter.html'\r\n})\r\n\r\nexport class ProductSizeParameterFilterComponent extends Translatable {\r\n\r\n @Input() paramCode: string = null;\r\n @Output() filterChanged: EventEmitter = new EventEmitter();\r\n\r\n paramSliderSelectedRange: number[] = [];\r\n productParameterForm: FormGroup;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n parametricFilterRequest: ParametricFilterRequest;\r\n\r\n\r\n parameter: ParameterSelector;\r\n filteredParameterValues: Array;\r\n\r\n constructor(public dataSvc: DataService,\r\n public seSvc: SettingsService,\r\n private catSvc: CategoryService,\r\n private fb: FormBuilder,\r\n private parSvc: ParameterService\r\n ) {\r\n super(dataSvc, seSvc);\r\n\r\n\r\n this.catSvc.filterDataChanged.pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n if (this.catSvc.parameters && this.catSvc.parameters.length) {\r\n this.parameter = this.catSvc.parameters.find(x => x.code == this.paramCode);\r\n if (this.parameter) {\r\n this.parameter.parameterValues = this.parameter.parameterValues.filter(x => !x.isDisabled);\r\n this.filteredParameterValues = JSON.parse(JSON.stringify(this.parameter.parameterValues));\r\n }\r\n this.createProductParameterForm();\r\n if (this.productParameterForm.controls['param'])\r\n this.productParameterForm.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.parameter = this.catSvc.parameters?.find(x => x.code == this.paramCode);\r\n if (this.parameter) this.parameter.parameterValues = this.parameter.parameterValues.filter(x => !x.isDisabled);\r\n this.filteredParameterValues = this.parameter ? JSON.parse(JSON.stringify(this.parameter?.parameterValues)) : null;\r\n this.createProductParameterForm();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n sliderSlideChange(range: number[]): void {\r\n if (range) {\r\n this.paramSliderSelectedRange[0] = range[0] === null ? this.paramSliderSelectedRange[0] : range[0];\r\n this.paramSliderSelectedRange[1] = range[1] === null ? this.paramSliderSelectedRange[1] : range[1];\r\n }\r\n }\r\n\r\n filterValues(range: number[]): void {\r\n if (range) {\r\n this.paramSliderSelectedRange[0] = range[0] === null ? this.paramSliderSelectedRange[0] : range[0];\r\n this.paramSliderSelectedRange[1] = range[1] === null ? this.paramSliderSelectedRange[1] : range[1];\r\n\r\n this.filteredParameterValues = this.parameter.parameterValues.filter((_obj, index) => {\r\n return index >= this.paramSliderSelectedRange[0] && index <= this.paramSliderSelectedRange[1];\r\n });\r\n let toRemove = this.parameter.parameterValues.filter((_obj, index) => {\r\n return index < this.paramSliderSelectedRange[0] || index > this.paramSliderSelectedRange[1];\r\n }).map(x => x.id.toString());\r\n\r\n if (toRemove.length > 0)\r\n this.UncheckSliderParameters(toRemove, false);\r\n }\r\n }\r\n\r\n private createProductParameterForm(): void {\r\n this.createForm();\r\n\r\n // Clear existing FormGroup.\r\n this.productParameterForm.controls['param'] = null;\r\n\r\n if (!this.parameter) {\r\n this.createParametricFilter(null);\r\n return;\r\n }\r\n // Create new FormGroup\r\n this.addCheckBoxes(this.parameter);\r\n }\r\n\r\n private createForm() {\r\n if (this.productParameterForm) {\r\n return;\r\n }\r\n // Create parent FormGroup control (exist even if the product parameters are not loaded).\r\n let param: FormGroup = new FormGroup({});\r\n this.productParameterForm = this.fb.group({\r\n param: param\r\n });\r\n }\r\n\r\n private addCheckBoxes(parameter: ParameterSelector) {\r\n let controls: { [key: string]: FormControl } = {};\r\n\r\n (parameter.parameterValues as ParameterValueSelector[]).forEach((value) => {\r\n let checked = this.catSvc.paramFilter.isExactValueInFilter(parameter.id, value.id) && !value.isDisabled;\r\n controls[value.id] = new FormControl({value: checked, disabled: value.isDisabled});\r\n // value.isDisabled ? controls[value.id].disable() : controls[value.id].enable();\r\n });\r\n\r\n const values: FormGroup = new FormGroup(controls);\r\n const checkBoxGroup: FormGroup = new FormGroup({\r\n id: new FormControl({value: parameter.id, disabled: parameter.isDisabled}),\r\n values: values\r\n });\r\n\r\n checkBoxGroup.valueChanges\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((group) => {\r\n this.createParametricFilter(group)\r\n });\r\n\r\n this.productParameterForm.controls['param'] = checkBoxGroup;\r\n this.productParameterForm.updateValueAndValidity();\r\n }\r\n\r\n createParametricFilter(group: any | null): boolean {\r\n this.parametricFilterRequest = this.catSvc.paramFilter;\r\n\r\n this.parametricFilterRequest.exactValueParameters = this.parametricFilterRequest.exactValueParameters.filter(item => item.id !== this.parameter?.id);\r\n let control = this.productParameterForm.controls['param'];\r\n let param = this.parameter;\r\n\r\n if (param && param.type == 'default') {\r\n // Check the value has just changed because the model is not updated at this moment.\r\n // If ...\r\n if (!!group && group.id == control.value.id) {\r\n for (let value in group.values) {\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (group.values[value] === true) {\r\n this.parametricFilterRequest.addExactValue(param.id, parseInt(value));\r\n }\r\n }\r\n } else {\r\n // Check the model for previous changes\r\n for (let value in control.value.values) {\r\n // If a control is checked ==> add a value ID into the request object.\r\n if (control.value.values[value] === true) {\r\n this.parametricFilterRequest.addExactValue(control.value.id, parseInt(value));\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.catSvc.paramFilter = this.parametricFilterRequest;\r\n //this.catSvc.pageIndex = 1;\r\n this.catSvc.paramsHash = this.parametricFilterRequest.paramsHash;\r\n\r\n return true;\r\n }\r\n\r\n public UncheckParameter(paramId: number, paramValueId: number): void {\r\n if (paramId == this.parameter.id) {\r\n const control = (this.productParameterForm.controls['param'].get('values')).controls[paramValueId];\r\n if (control != null) {\r\n control.patchValue(false, {emitEvent: true});\r\n this.filterChanged.emit();\r\n }\r\n }\r\n }\r\n\r\n public UncheckSliderParameters(valIds: string[] = null, refresh: boolean = true): void {\r\n const controls = (this.productParameterForm.controls['param'].get('values')).controls;\r\n if (controls != null) {\r\n let objcts = Object.keys(controls);\r\n if (valIds != null) {\r\n objcts = objcts.filter(x => valIds.includes(x));\r\n }\r\n objcts.forEach(key => {\r\n controls[key].patchValue(false, {emitEvent: true});\r\n });\r\n this.productParameterForm.updateValueAndValidity();\r\n if (refresh)\r\n this.filterChanged.emit();\r\n }\r\n }\r\n\r\n public UncheckParameters(): void {\r\n let param: FormGroup = new FormGroup({});\r\n this.productParameterForm = this.fb.group({\r\n param: param\r\n });\r\n this.catSvc.paramFilter.exactValueParameters = this.catSvc.paramFilter.exactValueParameters.filter(item => item.id !== this.parameter?.id);\r\n this.createProductParameterForm();\r\n $('.filter__section').removeClass('filter__section--active');\r\n this.filterChanged.emit();\r\n }\r\n\r\n public getParamValueNameByIndex(index: number): string {\r\n let val = this.parameter.parameterValues[index]?.stringValue;\r\n return this.parSvc.formatValue(val, true,0);\r\n }\r\n\r\n public getParamValueName(str: string): string {\r\n return this.parSvc.formatValue(str, true,0);\r\n }\r\n}\r\n"," 0\">\r\n\r\n \r\n\r\n
\r\n SS {{getParamValueNameByIndex(paramSliderSelectedRange[0]) ?? 0}} – SS {{getParamValueNameByIndex(paramSliderSelectedRange[1]) ?? 0}}\r\n
\r\n \r\n
\r\n {{getParamValueNameByIndex(paramSliderSelectedRange[0]) ?? 0}} mm – {{getParamValueNameByIndex(paramSliderSelectedRange[1]) ?? 0}} mm\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {\r\n Component,\r\n EventEmitter, Input,\r\n Output, QueryList,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild, ViewChildren\r\n} from \"@angular/core\";\r\nimport {FilterType, ParametricFilterRequest, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {Subject} from \"rxjs\";\r\nimport {ProductSizeParameterFilterComponent} from \"./product-size-parameter-filter.component\";\r\nimport {CategoryService} from \"../../services/category.service\";\r\nimport {ParameterSelector} from \"../product-parameter-filter/common\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-product-size-parameters-filter',\r\n templateUrl: '../../tpl/product-size-parameters-filter.html'\r\n})\r\n\r\nexport class ProductSizeParametersFilterComponent extends Translatable {\r\n\r\n @ViewChild('contentTemplate') contentTemplate: TemplateRef;\r\n @ViewChildren(ProductSizeParameterFilterComponent) subFilters: QueryList = null;\r\n\r\n @Input() filterTYpe: FilterType = 'category';\r\n\r\n @Output() filterChanged: EventEmitter = new EventEmitter();\r\n\r\n paramCodeMM: string = 'size_filtr_mm'; //size2_1_mm\r\n paramCodeSS: string = 'size_filtr_ss'; //size_ss\r\n productParameterForm: FormGroup;\r\n\r\n get parameterSS(): ParameterSelector {\r\n return this.catSvc.parameters?.find(x => x.code == this.paramCodeSS);\r\n }\r\n\r\n get parameterMM(): ParameterSelector {\r\n return this.catSvc.parameters?.find(x => x.code == this.paramCodeMM);\r\n }\r\n\r\n get hasPartMM(): boolean {\r\n return this.parameterMM?.parameterValues.length > 0;\r\n }\r\n\r\n get hasPartSS(): boolean {\r\n return this.parameterSS?.parameterValues.length > 0;\r\n }\r\n\r\n get showDivider(): boolean {\r\n return this.hasPartMM && this.hasPartSS;\r\n }\r\n\r\n getActiveValuesNumber(): number {\r\n return this.catSvc.paramFilter?.exactValueParameters?.filter(item => item.id == this.parameterSS?.id).length\r\n + this.catSvc.paramFilter?.exactValueParameters?.filter(item => item.id == this.parameterMM?.id).length;\r\n }\r\n\r\n get showFilter(): boolean {\r\n return this.hasPartMM || this.hasPartSS;\r\n }\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n parametricFilterRequest: ParametricFilterRequest;\r\n\r\n constructor(public dataSvc: DataService, public seSvc: SettingsService,\r\n private rend: Renderer2, private catSvc: CategoryService\r\n ) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n toggleSection(section: HTMLDivElement): void {\r\n if (/section--active/.test(section.getAttribute('class'))) {\r\n this.rend.removeClass(section, 'filter__section--active')\r\n } else {\r\n $('.filter__section').removeClass('filter__section--active');\r\n this.rend.addClass(section, 'filter__section--active');\r\n }\r\n this.filterChanged.emit();\r\n }\r\n\r\n onSubFilterChanged() {\r\n this.filterChanged.emit()\r\n }\r\n\r\n selectClick() {\r\n this.filterChanged.emit();\r\n $('.filter__section').removeClass('filter__section--active');\r\n }\r\n\r\n UncheckParameters() {\r\n this.subFilters.forEach(x => x.UncheckParameters());\r\n $('.filter__section').removeClass('filter__section--active');\r\n }\r\n\r\n public UncheckParameter(paramId: number, paramValueId: number): void {\r\n this.subFilters.forEach(x => x.UncheckParameter(paramId, paramValueId));\r\n }\r\n}\r\n","\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {{sen['filter-title-size']}}\r\n
\r\n\r\n
0\" class=\"filter__count\">\r\n {{getActiveValuesNumber()}}\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n {{sen['product-filter-size-pullbar-note']}}\r\n
\r\n
\r\n\r\n
\r\n \r\n {{sen['cancel-filter']}}\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n {{sen['filter-title-size']}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n {{sen['product-filter-size-pullbar-note']}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProductSizeParametersFilterComponent} from \"./product-size-parameters-filter.component\";\r\nimport {ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ParameterSliderComponent} from \"./parameter-slider.component\";\r\nimport {ProductSizeParameterFilterComponent} from \"./product-size-parameter-filter.component\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n ReactiveFormsModule\r\n ],\r\n declarations: [\r\n ProductSizeParametersFilterComponent,\r\n ParameterSliderComponent,\r\n ProductSizeParameterFilterComponent\r\n ],\r\n exports: [\r\n ProductSizeParametersFilterComponent,\r\n ParameterSliderComponent\r\n ]\r\n})\r\n\r\nexport class ProductSizeParametersFilterModule {\r\n}","import {OrderByOptions} from \"../category/interfaces\";\r\nimport {ParametricFilterRequest} from \"../../interfaces/general\";\r\nimport {ProductResponseModel} from \"../product/common\";\r\nimport {ParameterMasterSelector, ParameterSelector} from \"../product-parameter-filter/common\";\r\n\r\nexport interface ProductRequest {\r\n variantKey: number;\r\n cultureId: number;\r\n pageIndex: number;\r\n pageSize: number;\r\n priceRange: number[];\r\n orderByKeys: string[];\r\n parametricFilter?: ParametricFilterRequest;\r\n}\r\n\r\nexport class ProductFilterConfigInitializer {\r\n variantKey?: number;\r\n cultureId?: number;\r\n pageSizeIndex?: number;\r\n pageIndex?: number;\r\n selectedPriceRange: number[];\r\n selectedOrderBy: OrderByOptions;\r\n orderByIndex: number;\r\n filterIsActive: boolean;\r\n paramsHash: string;\r\n pageSizes: any[];\r\n}\r\nexport class ProductFilterConfig extends ProductFilterConfigInitializer {\r\n\r\n constructor(init: ProductFilterConfigInitializer) {\r\n super();\r\n this.variantKey = init.variantKey;\r\n this.cultureId = init.cultureId;\r\n this.pageSizeIndex = init.pageSizeIndex;\r\n this.pageIndex = init.pageIndex;\r\n this.selectedPriceRange = init.selectedPriceRange;\r\n this.selectedOrderBy = init.selectedOrderBy;\r\n this.orderByIndex = init.orderByIndex;\r\n this.filterIsActive = init.filterIsActive;\r\n this.paramsHash = init.paramsHash;\r\n this.pageSizes = init.pageSizes;\r\n }\r\n\r\n public get pageSize(): number {\r\n\r\n if (!this.pageSizes || this.pageSizeIndex == null || this.pageSizeIndex < 0) {\r\n return null;\r\n }\r\n return this.pageSizes[this.pageSizeIndex].value;\r\n }\r\n\r\n public set pageSize(value: number) {\r\n if (!this.pageSizes || !value) {\r\n return;\r\n }\r\n\r\n let pageSize = this.pageSizes.find(ps => ps.value == value);\r\n if (pageSize) {\r\n this.pageSizeIndex = this.pageSizes.indexOf(pageSize);\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\nexport interface ProductDetailDataSelector {\r\n products: ProductResponseModel;\r\n parameters: Array;\r\n masterParameters: Array;\r\n\r\n availableOnlyCount: number;\r\n prices: Array;\r\n priceMin: number;\r\n priceMax: number;\r\n\r\n\r\n // just for debugging and informative purposes\r\n passesCount?: number\r\n}\r\n\r\n\r\nexport interface ProductFlagSelector {\r\n id: number;\r\n name: string;\r\n order: number;\r\n url: string;\r\n productsCount: number;\r\n backgroundColor: string;\r\n textColor: string;\r\n}","import {EventEmitter, Injectable, Injector} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SharedProductSettings} from \"../../shared-settings/shared-settings\";\r\nimport {BehaviorSubject, Subject} from \"rxjs\";\r\nimport {OrderByOptions} from \"../category/interfaces\";\r\nimport {ParameterMasterSelector, ParameterSelector} from \"../product-parameter-filter/common\";\r\nimport {ParametricFilterRequest, StringIndexedObject} from \"../../interfaces/general\";\r\nimport {ProducerSelectorBrief} from \"../producer-filter/common\";\r\nimport {finalize, take, takeUntil} from \"rxjs/operators\";\r\nimport {ProductDetailDataSelector, ProductFilterConfig, ProductRequest} from \"./interfaces\";\r\nimport {Params} from \"@angular/router\";\r\nimport {ProductResponseModel} from \"../product/common\";\r\n\r\ndeclare let StringView: any;\r\n\r\n@Injectable()\r\nexport class ProductVariantsParametersFilterService {\r\n private http: HttpClient;\r\n private dataSvc: DataService;\r\n // private seSvc: SettingsService;\r\n private sharedProdSettsSvc: SharedProductSettings;\r\n private _lastRequestString: string = null;\r\n\r\n orderByOptions: OrderByOptions[];\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n storedParams: StringIndexedObject | number | Array>;\r\n\r\n get pageSizeIndex(): number {\r\n return this.config.pageSizeIndex;\r\n }\r\n\r\n set pageSizeIndex(value: number) {\r\n this.config.pageSizeIndex = value;\r\n }\r\n\r\n\r\n get pageIndex(): number {\r\n return this.config.pageIndex;\r\n }\r\n\r\n set pageIndex(value: number) {\r\n this.config.pageIndex = value;\r\n }\r\n\r\n get pageSize(): number {\r\n return this.config.pageSize;\r\n }\r\n\r\n set pageSize(value: number) {\r\n this.config.pageSize = value;\r\n }\r\n\r\n get orderByIndex(): number {\r\n return this.config.orderByIndex;\r\n }\r\n\r\n set orderByIndex(value: number) {\r\n this.config.orderByIndex = value;\r\n }\r\n\r\n get cultureId(): number {\r\n return this.config.cultureId;\r\n }\r\n\r\n set cultureId(value: number) {\r\n this.config.cultureId = value;\r\n }\r\n\r\n get pageSizes(): any[] {\r\n return this.config.pageSizes;\r\n }\r\n\r\n set pageSizes(value: any[]) {\r\n this.config.pageSizes = value;\r\n }\r\n\r\n get selectedOrderBy(): OrderByOptions {\r\n return this.config.selectedOrderBy;\r\n }\r\n\r\n set selectedOrderBy(value: OrderByOptions) {\r\n this.config.selectedOrderBy = value;\r\n }\r\n\r\n get paramsHash(): string {\r\n return this.config.paramsHash;\r\n }\r\n\r\n set paramsHash(value: string) {\r\n this.config.paramsHash = value;\r\n }\r\n\r\n get variantKey(): number {\r\n return this.config.variantKey;\r\n }\r\n\r\n set variantKey(value: number) {\r\n this.config.variantKey = value;\r\n }\r\n\r\n resetCacheKey(): void{\r\n this._lastRequestString = null;\r\n }\r\n\r\n constructor(private injector: Injector) {\r\n\r\n this.http = this.injector.get(HttpClient);\r\n this.dataSvc = this.injector.get(DataService);\r\n this.sharedProdSettsSvc = this.injector.get(SharedProductSettings);\r\n // this.seSvc = this.injector.get(SettingsService);\r\n\r\n this.orderByOptions = [\r\n {id: this.sharedProdSettsSvc.Sorting.name_asc, name: 'product-order-name-asc'},\r\n {id: this.sharedProdSettsSvc.Sorting.name_desc, name: 'product-order-name-desc'},\r\n {id: this.sharedProdSettsSvc.Sorting.color_asc, name: 'product-order-color-asc'},\r\n {id: this.sharedProdSettsSvc.Sorting.color_desc, name: 'product-order-color-desc'},\r\n {id: this.sharedProdSettsSvc.Sorting.app_asc, name: 'product-order-app-asc'},\r\n {id: this.sharedProdSettsSvc.Sorting.app_desc, name: 'product-order-app-desc'},\r\n {id: this.sharedProdSettsSvc.Sorting.size_asc, name: 'product-order-size-asc'},\r\n {id: this.sharedProdSettsSvc.Sorting.size_desc, name: 'product-order-size-desc'},\r\n ];\r\n\r\n this.init();\r\n }\r\n\r\n afterSvcInit: EventEmitter = new EventEmitter();\r\n filterDataChanged: BehaviorSubject = new BehaviorSubject(null);\r\n productDataChanged: EventEmitter = new EventEmitter();\r\n\r\n private _config: ProductFilterConfig;\r\n\r\n get config(): ProductFilterConfig {\r\n return this._config;\r\n }\r\n\r\n\r\n availableOnlyCount: number;\r\n parameters: Array;\r\n paramMasters: Array;\r\n prices: Array;\r\n\r\n get priceMin(): number {\r\n if (!this.prices || !this.prices.length) {\r\n return null;\r\n }\r\n return Math.min(...this.prices);\r\n }\r\n\r\n get priceMax(): number {\r\n if (!this.prices || !this.prices.length) {\r\n return null;\r\n }\r\n return Math.max(...this.prices);\r\n }\r\n\r\n private _parametricFilter: ParametricFilterRequest;\r\n\r\n productsModel: ProductResponseModel;\r\n\r\n private _producers: Array;\r\n set producers(value: Array) {\r\n this._producers = value;\r\n }\r\n\r\n get producers(): Array {\r\n return this._producers;\r\n }\r\n\r\n private init() {\r\n this.paramFilter = new ParametricFilterRequest(null);\r\n\r\n this._config = this.getNewConfig();\r\n\r\n this.fillData(null);\r\n\r\n this.afterSvcInit.emit();\r\n }\r\n\r\n private getNewConfig(): ProductFilterConfig {\r\n return new ProductFilterConfig({\r\n pageSizeIndex: 0,\r\n pageIndex: 1,\r\n selectedPriceRange: [null, null],\r\n selectedOrderBy: this.orderByOptions[0],\r\n orderByIndex: 0,\r\n filterIsActive: false,\r\n paramsHash: this.paramFilter.paramsHash,\r\n pageSizes: [{value: 10}]\r\n });\r\n }\r\n\r\n getProductRequest(): ProductRequest {\r\n\r\n let productRequest: ProductRequest = {\r\n variantKey: this.config.variantKey,\r\n cultureId: this.config.cultureId,\r\n pageIndex: this.config.pageIndex,\r\n pageSize: 10,\r\n priceRange: [\r\n this.config.selectedPriceRange[0],\r\n this.config.selectedPriceRange[1]\r\n ],\r\n orderByKeys: [this.orderByOptions[this.orderByIndex].id],\r\n parametricFilter: this.paramFilter\r\n };\r\n\r\n return productRequest;\r\n }\r\n\r\n getProductDetailData(force: boolean = false): void {\r\n const req = this.getProductRequest();\r\n let productRequestString = new StringView(JSON.stringify(req)).toBase64();\r\n\r\n if (productRequestString == this._lastRequestString && !force) {\r\n console.log('request not changes', req);\r\n this.filterDataChanged.next(null);\r\n return;\r\n }\r\n this._lastRequestString = productRequestString;\r\n\r\n console.log('getProductDetailData', req);\r\n\r\n this.dataSvc.dataLoading = true;\r\n this.http.get(`api/product/product-detail-data?qs=${productRequestString}`)\r\n .pipe(\r\n take(1),\r\n finalize(() => {\r\n this.dataSvc.dataLoading = false;\r\n }),\r\n takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.fillData(res);\r\n this.productDataChanged.emit();\r\n this.filterDataChanged.next(null);\r\n });\r\n }\r\n\r\n\r\n private fillData(dataObject: ProductDetailDataSelector): void {\r\n if (dataObject) {\r\n this.parameters = dataObject.parameters;//.filter(f => f.productCount > 0);\r\n this.paramMasters = dataObject.masterParameters;\r\n this.prices = dataObject.prices;\r\n this.productsModel = dataObject.products;\r\n } else {\r\n this.parameters = null;\r\n this.paramMasters = null;\r\n this.prices = null;\r\n this.productsModel = null;\r\n }\r\n }\r\n\r\n getPriceRange(): Array {\r\n if (!this.config.selectedPriceRange) {\r\n this.config.selectedPriceRange = [null, null];\r\n }\r\n return this.config.selectedPriceRange;\r\n }\r\n\r\n setPriceRange(numbers: Array) {\r\n if (!numbers || !Array.isArray(numbers) || numbers.length == 0) {\r\n numbers = [null, null];\r\n } else if (numbers.length == 1) {\r\n numbers = [numbers[0], null];\r\n } else {\r\n numbers = [numbers[0], numbers[1]];\r\n }\r\n this.config.selectedPriceRange = numbers;\r\n }\r\n\r\n set paramFilter(paramFilter: ParametricFilterRequest) {\r\n this._parametricFilter = paramFilter;\r\n }\r\n\r\n get paramFilter(): ParametricFilterRequest {\r\n return this._parametricFilter;\r\n }\r\n\r\n loadParams(variantKey: number, queryParams: Params) {\r\n\r\n this.paramFilter = new ParametricFilterRequest(ParametricFilterRequest.getParamsFilterInitializerFromUrlParams(queryParams, ['999903014', '999903009']));\r\n this.pageIndex = 1;\r\n this.variantKey = variantKey;\r\n }\r\n\r\n}","import {PageRequest, ProductVariantBriefSelector, UnitSelector} from \"../../interfaces/general\";\r\nimport {ParameterProductSelector} from \"../product/common\";\r\n\r\nexport interface ProductVariantParameter extends ProductVariantBriefSelector {\r\n parameters: Array;\r\n}\r\n\r\nexport enum ParamValueType {\r\n METER = 0,\r\n SS = 1,\r\n CM = 2,\r\n MM = 3,\r\n SETINY_MM = 6,\r\n YARD = 9\r\n\r\n}\r\n\r\nexport interface VariantListItemDisplay {\r\n variantId: number;\r\n variantKey: number;\r\n name: string;\r\n commonName: string;\r\n masterCode: string;\r\n seoUrl: string;\r\n imagePath: string;\r\n imageTitle: string;\r\n color: string;\r\n colorAB: string;\r\n coating: string;\r\n effect: string;\r\n colorCoatingEffect?: string\r\n size: string;\r\n application: string;\r\n shape: string;\r\n shapeId: string;\r\n unit: UnitSelector;\r\n amount: number;\r\n}\r\n\r\nexport interface ProductVariantSimpleSelector {\r\n variantId: number;\r\n variantKey: number;\r\n name: string;\r\n commonName: string;\r\n masterCode: string;\r\n seoUrl: string;\r\n imagePath: string;\r\n imageTitle: string;\r\n unit: UnitSelector;\r\n minQtyOrder: number;\r\n parameters: Array;\r\n}\r\n\r\nexport interface IProductVariantListConfig extends PageRequest {\r\n variantKey: number;\r\n}\r\n\r\nexport type ProductVariantListPlace = 'detail' | 'guide';","import {Component, EventEmitter, Input, Output, ViewEncapsulation} from \"@angular/core\";\r\nimport {ProductVariantBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {VariantListItemDisplay} from \"./common\";\r\nimport {IWishListReqSelector} from \"../wish-list/common\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Subject} from \"rxjs\";\r\nimport {WishListService} from \"../../services/wish-list-service\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-product-variant-list-item',\r\n templateUrl: './product-variant-list-item.html',\r\n styleUrls: ['../../assets/styles/2-components/products-table.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ProductVariantListItemComponent extends Translatable {\r\n\r\n private _item: ProductVariantBriefSelector;\r\n @Input()\r\n set item(value: ProductVariantBriefSelector) {\r\n this._item = value;\r\n this.fillDisplayedProductModel(this._item);\r\n }\r\n\r\n get item(): ProductVariantBriefSelector {\r\n return this._item;\r\n }\r\n\r\n @Output() variantClick: EventEmitter = new EventEmitter();\r\n\r\n displayModel: VariantListItemDisplay;\r\n imagePathPrefix: string;\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private wlSvc: WishListService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.imagePathPrefix = this.seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n\r\n private fillDisplayedProductModel(data: ProductVariantBriefSelector): void {\r\n if (data) {\r\n\r\n this.displayModel = {\r\n variantId: data.id,\r\n variantKey: data.variantKey,\r\n seoUrl: data.seoUrl,\r\n name: data.name,\r\n masterCode: data.masterCode,\r\n imagePath: data.imagePath,\r\n imageTitle: data.imageTitle,\r\n commonName: data.commonName,\r\n unit: data.unit,\r\n size: data.size,\r\n color: data.color,\r\n colorAB: data.colorAB,\r\n coating: data.coating,\r\n effect: data.effect,\r\n colorCoatingEffect: this.colorCoatingEffect,\r\n amount: data.minQtyOrder,\r\n application: data.application,\r\n shape: null,\r\n shapeId: data.shapeId\r\n };\r\n }\r\n }\r\n\r\n private get colorCoatingEffect(): string {\r\n let res = null;\r\n if (this.item) {\r\n let arr: string[] = [];\r\n if ((this.item.color || this.item.colorAB) && !this.item.coating && !this.item.effect) {\r\n arr.push((this.item.colorAB ? this.item.colorAB : this.item.color).trim())\r\n }\r\n if (this.item.coating) {\r\n arr.push(this.item.coating)\r\n }\r\n if (this.item.effect) {\r\n arr.push(this.item.effect)\r\n }\r\n res = arr.join(' ');\r\n }\r\n return res;\r\n }\r\n\r\n toggleWishList(amount: number): void {\r\n this.dataSvc.dataLoading = true;\r\n\r\n if (!this.isOnWishList) {\r\n const req: IWishListReqSelector = {\r\n variantId: this.displayModel.variantId,\r\n amount: amount,\r\n variantKey: this.displayModel.variantKey\r\n };\r\n this.wlSvc.addItemToWishList(req)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.dataSvc.dataLoading = false;\r\n }, () => {\r\n this.dataSvc.dataLoading = false;\r\n })\r\n } else {\r\n this.wlSvc.removeFromWishList(this.displayModel.variantId, this.displayModel.variantKey)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.dataSvc.dataLoading = false;\r\n }, () => {\r\n this.dataSvc.dataLoading = false;\r\n })\r\n }\r\n }\r\n\r\n get isOnWishList(): boolean {\r\n return this.wlSvc.isOnWishList(this.displayModel.variantId, this.displayModel.variantKey);\r\n }\r\n\r\n onVariantClick(): void {\r\n this.variantClick.emit(this.item);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n {{displayModel.commonName}}\r\n
\r\n
\r\n {{displayModel.shapeId}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{displayModel.colorCoatingEffect}}\r\n
\r\n\r\n
\r\n\r\n
\r\n {{displayModel.application}}\r\n
\r\n\r\n
\r\n {{displayModel.unit?.shortCut}}\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
","import {Component, EventEmitter, Input, Output} from \"@angular/core\";\r\nimport {ProductVariantBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {ProductVariantsParametersFilterService} from \"../product-variants-parameters-filter/product-variants-parameters-filter.service\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-product-variant-list',\r\n templateUrl: './product-variant-list.html'\r\n})\r\n\r\nexport class ProductVariantListComponent extends Translatable {\r\n\r\n @Input() items: ProductVariantBriefSelector[];\r\n @Input() filterSvc: ProductVariantsParametersFilterService;\r\n\r\n @Output() onSortChanged: EventEmitter = new EventEmitter();\r\n @Output() variantClick: EventEmitter = new EventEmitter();\r\n\r\n get sortIndex(): number {\r\n return this.filterSvc.orderByIndex;\r\n }\r\n\r\n set sortIndex(value: number) {\r\n this.filterSvc.orderByIndex = value;\r\n }\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n sortChanged(sortIdx: number): void {\r\n if (sortIdx != this.sortIndex) {\r\n this.sortIndex = sortIdx;\r\n } else {\r\n this.sortIndex = this.sortIndex + 1;\r\n }\r\n this.onSortChanged.emit();\r\n }\r\n\r\n onVariantClick(item: ProductVariantBriefSelector): void {\r\n this.variantClick.emit(item);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n {{sen['variant-list-head-name']}}\r\n
\r\n\r\n
\r\n {{sen['variant-list-head-color']}}\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {{sen['variant-list-head-size']}}\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {{sen['variant-list-head-app']}}\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {{sen['variant-list-head-package']}}\r\n
\r\n\r\n
\r\n {{sen['variant-list-head-amount']}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n 0\">\r\n \r\n \r\n\r\n 0) && dataSvc.dataLoading\" [alertType]=\"'info'\" [message]=\"sen['app-loading-data']\">\r\n 0) && !dataSvc.dataLoading\">\r\n
\r\n
\r\n","import {Component, EventEmitter, Output, ViewEncapsulation} from \"@angular/core\";\r\nimport {ProductVariantBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {Subject} from \"rxjs\";\r\nimport {PageChangedInfo} from \"../pagination/common\";\r\nimport {ScrollHelper} from \"../../helpers/scroll.helper\";\r\nimport {ProductVariantsParametersFilterService} from \"../product-variants-parameters-filter/product-variants-parameters-filter.service\";\r\n\r\ndeclare let StringView: any;\r\n\r\n@Component({\r\n selector: 'cmp-product-variants',\r\n templateUrl: './product-variants.html',\r\n styleUrls: ['../../assets/styles/4-routes/product-detail.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ProductVariantsComponent extends Translatable {\r\n\r\n @Output() variantClick: EventEmitter = new EventEmitter();\r\n pageIndex: number = 1;\r\n pageSize: number;\r\n totalItems: number = 0;\r\n\r\n productVariants: ProductVariantBriefSelector[] = null;\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n public filterSvc: ProductVariantsParametersFilterService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.productVariants = null;\r\n this.totalItems = 0;\r\n this.pageSize = this.filterSvc.pageSize;\r\n\r\n this.filterSvc.productDataChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n if (this.filterSvc.productsModel?.variants?.length > 0) {\r\n this.productVariants = this.filterSvc.productsModel?.variants;\r\n this.totalItems = this.filterSvc.productsModel?.totalCount;\r\n } else {\r\n this.totalItems = 0;\r\n }\r\n });\r\n }\r\n\r\n pageChanged(event: PageChangedInfo): void {\r\n if (event.page != this.pageIndex) {\r\n this.pageIndex = event.page;\r\n this.filterSvc.pageIndex = this.pageIndex;\r\n\r\n this.filterSvc.getProductDetailData();\r\n this.scrollUp();\r\n }\r\n }\r\n\r\n sortChanged(): void {\r\n this.filterSvc.pageIndex = this.pageIndex = 1;\r\n\r\n this.filterSvc.getProductDetailData();\r\n this.scrollUp();\r\n }\r\n\r\n private scrollUp(): void {\r\n ScrollHelper.scrollToAnchorOffset('cmp-product-variant-list', -60);\r\n }\r\n\r\n onVariantClick(item: ProductVariantBriefSelector): void {\r\n this.variantClick.emit(item);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n\r\n\r\n \r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ProductVariantListComponent} from \"./product-variant-list.component\";\r\nimport {AlertModule} from \"../alert/alert.module\";\r\nimport {ProductVariantsComponent} from \"./product-variants.component\";\r\nimport {FlexPaginationModule} from \"../pagination/pagination.module\";\r\nimport {ParameterService} from \"../../services/parameter.service\";\r\nimport {ProductVariantListItemComponent} from \"./product-variant-list-item.component\";\r\nimport {ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ProductAmountModule} from \"../product-amount/product-amount.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\nimport {ProductVariantsParametersFilterService} from \"../product-variants-parameters-filter/product-variants-parameters-filter.service\";\r\nimport {PaginatorModule} from \"../paginator/paginator.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n AlertModule,\r\n FlexPaginationModule,\r\n ReactiveFormsModule,\r\n ProductAmountModule,\r\n PaginatorModule\r\n ],\r\n declarations: [\r\n ProductVariantsComponent,\r\n ProductVariantListComponent,\r\n ProductVariantListItemComponent\r\n ],\r\n exports: [\r\n ProductVariantsComponent,\r\n ProductVariantListComponent,\r\n ProductVariantListItemComponent\r\n ],\r\n providers:[\r\n ParameterService,\r\n ProductVariantsParametersFilterService\r\n ]\r\n})\r\n\r\nexport class ProductVariantsModule {\r\n}","import {Component, Input, SimpleChanges, ViewEncapsulation} from \"@angular/core\";\r\nimport {ArticleBriefSelector, Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {Innovation} from \"../innovation/common\";\r\nimport {MenuItem} from \"./common\";\r\n\r\n@Component({\r\n selector: 'cmp-responsive-menu-list',\r\n templateUrl: '../../tpl/responsive-menu-list.html',\r\n styleUrls: ['../../assets/styles/3-layout/header/responsive-menu-list.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ResponsiveMenuListComponent extends Translatable {\r\n\r\n @Input() articles: Array = null;\r\n @Input() innovations: Array = null;\r\n @Input() pageSize: number = 6;\r\n menuItems: Array = null;\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['articles']?.currentValue || changes['innovations']?.currentValue) {\r\n this.init();\r\n }\r\n }\r\n\r\n init(){\r\n if(this.articles?.length > 0){\r\n this.menuItems = this.articles.map((x)=> {\r\n return {\r\n seoUrl: x.seoUrl,\r\n title: x.name,\r\n extUrl: null\r\n }\r\n }).slice(0,this.pageSize)\r\n }else if(this.innovations?.length > 0){\r\n this.menuItems = this.innovations.map((x)=> {\r\n return {\r\n seoUrl: x.url,\r\n extUrl: x.extUrl,\r\n title: x.name\r\n }\r\n }).slice(0,this.pageSize)\r\n }else\r\n this.menuItems = null;\r\n\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ResponsiveMenuListComponent} from \"./responsive-menu-list.component\";\r\nimport {RouterModule} from \"@angular/router\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule\r\n ],\r\n declarations: [\r\n ResponsiveMenuListComponent\r\n ],\r\n exports: [\r\n ResponsiveMenuListComponent\r\n ]\r\n})\r\n\r\nexport class ResponsiveMenuListModule {\r\n}","import {Component, ElementRef, HostListener, Input, OnInit, ViewEncapsulation} from '@angular/core';\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-param-select-box',\r\n templateUrl: './param-select-box.component.html',\r\n styleUrls: ['../../../assets/styles/2-components/select-box.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ParamSelectBoxComponent implements OnInit {\r\n\r\n @Input() disabled: boolean;\r\n\r\n isOpened: boolean = false;\r\n\r\n constructor(\r\n private elRef: ElementRef\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpened) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n\r\n open(): void {\r\n if (!this.disabled) {\r\n this.isOpened = true;\r\n }\r\n }\r\n\r\n close(): void {\r\n this.isOpened = false;\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClickOut(ev: any): void {\r\n const $this = $(this.elRef.nativeElement);\r\n const $target = $(ev.target);\r\n\r\n if ($target.closest($this).length === 0) {\r\n this.close();\r\n }\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n","import {\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {ISelectBoxItemModel} from \"../interfaces/ISelectBoxItemModel\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {Translatable} from \"../../../interfaces/general\";\r\nimport {DataService} from \"../../../services/data.service\";\r\nimport {SettingsService} from \"../../../services/settings.service\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-select-box-multi',\r\n templateUrl: './select-box-multi.component.html',\r\n styleUrls: ['../../../assets/styles/2-components/select-box.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectBoxMultiComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SelectBoxMultiComponent extends Translatable implements OnInit, ControlValueAccessor {\r\n\r\n @ContentChild(TemplateRef) template: TemplateRef = null;\r\n @Input() title: string;\r\n @Input() items: ISelectBoxItemModel[] = null;\r\n\r\n @Output() change: EventEmitter = new EventEmitter();\r\n\r\n isOpened: boolean = false;\r\n isDisabled: boolean = false;\r\n selectedValues: V[] = [];\r\n\r\n private writeValueFunc: (_: any) => void = null;\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private elRef: ElementRef) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpened) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n open(): void {\r\n if (!this.isDisabled)\r\n this.isOpened = true;\r\n }\r\n\r\n close(): void {\r\n this.isOpened = false;\r\n }\r\n\r\n isValueSelected(val: V): boolean {\r\n return this.selectedValues.find(x => x == val) !== undefined;\r\n }\r\n\r\n selectItem(item: ISelectBoxItemModel): void {\r\n if (!item.isDisabled) {\r\n this.close();\r\n let idx = this.selectedValues.indexOf(item.value);\r\n if (idx != -1) {\r\n this.selectedValues.splice(idx, 1);\r\n } else {\r\n this.selectedValues.push(item.value);\r\n }\r\n this.writeValueFunc && this.writeValueFunc(this.selectedValues);\r\n this.change.emit(this.selectedValues);\r\n\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onClickOut(ev: any): void {\r\n const $this = $(this.elRef.nativeElement);\r\n const $target = $(ev.target);\r\n\r\n if ($target.closest($this).length === 0) {\r\n this.close();\r\n }\r\n }\r\n\r\n get AnySelectedItem(): boolean {\r\n return this.items?.some(q => this.selectedValues.includes(q.value)) ?? false;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.writeValueFunc = fn;\r\n }\r\n\r\n registerOnTouched(_fn: any): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n writeValue(value: V[]): void {\r\n if (value != null) this.selectedValues = value\r\n }\r\n\r\n keyPress(event: KeyboardEvent, callback: (...argArray: any[]) => any, ...argArray: any[]): void {\r\n if (event.key == 'Enter') {\r\n callback.apply(this, argArray);\r\n }\r\n }\r\n}\r\n","\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n {{title}}\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {SelectBoxComponent} from './select-box/select-box.component';\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport { ParamSelectBoxComponent } from './param-select-box/param-select-box.component';\r\nimport {SelectBoxMultiComponent} from \"./select-box-multi/select-box-multi.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n SelectBoxComponent,\r\n ParamSelectBoxComponent,\r\n SelectBoxMultiComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n SelectBoxComponent,\r\n ParamSelectBoxComponent,\r\n SelectBoxMultiComponent\r\n ]\r\n})\r\nexport class SelectBoxModule {\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {ISelectBoxItemModel} from \"../interfaces/ISelectBoxItemModel\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {Translatable} from \"../../../interfaces/general\";\r\nimport {DataService} from \"../../../services/data.service\";\r\nimport {SettingsService} from \"../../../services/settings.service\";\r\n\r\ndeclare let $: any;\r\n\r\n@Component({\r\n selector: 'cmp-select-box',\r\n templateUrl: './select-box.component.html',\r\n styleUrls: ['../../../assets/styles/2-components/select-box.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectBoxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class SelectBoxComponent extends Translatable implements OnInit, ControlValueAccessor {\r\n\r\n @ContentChild(TemplateRef) template: TemplateRef = null;\r\n @Input() items: ISelectBoxItemModel[] = null;\r\n @Output() change: EventEmitter = new EventEmitter();\r\n @Input() placeHolder: string;\r\n\r\n isOpened: boolean = false;\r\n isDisabled: boolean = false;\r\n selectedValue: V = null;\r\n\r\n private writeValueFunc: (_: any) => void = null;\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService, private elRef: ElementRef) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpened) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n\r\n open(): void {\r\n if (!this.isDisabled)\r\n this.isOpened = true;\r\n }\r\n\r\n close(): void {\r\n this.isOpened = false;\r\n }\r\n\r\n selectItem(item: ISelectBoxItemModel): void {\r\n if (!item.isDisabled) {\r\n this.selectedValue = item.value;\r\n this.close();\r\n this.writeValueFunc && this.writeValueFunc(this.selectedValue);\r\n this.change.emit(this.selectedValue);\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onClickOut(ev: any): void {\r\n const $this = $(this.elRef.nativeElement);\r\n const $target = $(ev.target);\r\n\r\n if ($target.closest($this).length === 0) {\r\n this.close();\r\n }\r\n }\r\n\r\n get AnySelectedItem(): boolean {\r\n return this.items?.some(q => q.value === this.selectedValue) ?? false;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.writeValueFunc = fn;\r\n }\r\n\r\n registerOnTouched(_fn: any): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.selectedValue = value;\r\n }\r\n\r\n keyPress(event: KeyboardEvent, callback: (...argArray: any[]) => any, ...argArray: any[]): void {\r\n if (event.key == 'Enter') {\r\n callback.apply(this, argArray);\r\n }\r\n }\r\n}\r\n","\r\n {{title}}\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {{placeHolder}}\r\n {{sen['select-box-choose']}}\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {Subject} from \"rxjs\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {SocialSelector} from \"./common\";\r\n\r\n@Component({\r\n selector: 'cmp-settings-social',\r\n templateUrl: '../../tpl/settings-social.html',\r\n styleUrls: ['../../assets/styles/2-components/socials.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class SettingsSocialComponent extends Translatable {\r\n\r\n @Input() cssClass: string;\r\n\r\n data: SocialSelector;\r\n imagePathPrefix: string;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, public seSvc: SettingsService,\r\n private http: HttpClient) {\r\n super(dataSvc, seSvc);\r\n this.imagePathPrefix = seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getData();\r\n }\r\n\r\n private getData(): void {\r\n this.http.get(`api/settings/social`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.data = res;\r\n });\r\n }\r\n\r\n onCnWechatClick():void{\r\n window.open(`${this.imagePathPrefix}/orig/Wechat_QR_code.png`,'_blank',' scrollbars=yes,menubar=no,width=500, resizable=yes,toolbar=no,location=no,status=no')\r\n }\r\n}","\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {SettingsSocialComponent} from \"./settings-social.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [SettingsSocialComponent],\r\n exports: [SettingsSocialComponent]\r\n})\r\n\r\nexport class SettingsSocialModule {}","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {Subject} from \"rxjs\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {aboutUsSelector} from \"./common\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\n@Component({\r\n selector: 'cmp-settings-aboutus',\r\n templateUrl: '../../tpl/settings-aboutus.html',\r\n styleUrls: ['../../assets/styles/2-components/about-us.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class SettingsAboutusComponent extends Translatable {\r\n\r\n @Input() cssClass: string;\r\n\r\n data: aboutUsSelector;\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(dataSvc: DataService, public seSvc: SettingsService,\r\n private http: HttpClient, private sanitizer: DomSanitizer) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getData();\r\n }\r\n\r\n private getData(): void {\r\n this.http.get(`api/settings/about-us`)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.data = this.handleData(res);\r\n });\r\n }\r\n\r\n private handleData(inp: aboutUsSelector): aboutUsSelector {\r\n if (inp && inp.aboutUs) inp.aboutUs = this.sanitizer.bypassSecurityTrustHtml((inp.aboutUs));\r\n return inp;\r\n }\r\n}","
\r\n
\r\n
","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {SettingsAboutusComponent} from \"./settings-aboutus.component\";\r\n\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [SettingsAboutusComponent],\r\n exports: [SettingsAboutusComponent]\r\n})\r\n\r\nexport class SettingsAboutusModule {}","/**\r\n * @description\r\n * Confirm password validation directive.\r\n * Can be used generally for comparing two strings - makes control invalid when strings are not the same\r\n * One string is taken from the host element, the other supplied via input parameter.\r\n */\r\nimport {Directive, Input, OnChanges, SimpleChanges} from '@angular/core';\r\nimport {AbstractControl, NG_VALIDATORS, Validator, ValidatorFn, Validators} from \"@angular/forms\";\r\n\r\nexport function compareValidator(compareWith: string): ValidatorFn {\r\n\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n const self: string = control.value ? control.value : null;\r\n let no: boolean = self !== compareWith;\r\n return no ? {'compare': {self}} : null;\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[compare]',\r\n providers: [{provide: NG_VALIDATORS, useExisting: CompareValidatorDirective, multi: true}]\r\n})\r\n\r\nexport class CompareValidatorDirective implements Validator, OnChanges {\r\n\r\n @Input('compare') compare: string;\r\n private valFn = Validators.nullValidator;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['compare'];\r\n if (change) {\r\n let val = change.currentValue;\r\n this.valFn = compareValidator(val);\r\n } else {\r\n this.valFn = Validators.nullValidator;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n return this.valFn(control);\r\n }\r\n\r\n}","/**\r\n * @description\r\n * Component providing validation of Company Registration Number (IČ)\r\n * Note:\r\n * For best result use ARES API\r\n */\r\nimport {Directive, Input, OnChanges, SimpleChanges} from '@angular/core';\r\nimport {AbstractControl, NG_VALIDATORS, Validator, ValidatorFn, Validators} from \"@angular/forms\";\r\n\r\n/**\r\n * Validation of Czech IČ\r\n * @param x\r\n * @returns {boolean}\r\n */\r\nexport function testCrnCz(x: string) {\r\n try {\r\n let a = 0;\r\n if (x.length == 0) return true;\r\n if (x.length != 8) return false;\r\n let b = x.split('');\r\n let c;\r\n for (let i = 0; i < 7; i++) a += (parseInt(b[i]) * (8 - i));\r\n a = a % 11;\r\n c = 11 - a;\r\n if (a == 1) c = 0;\r\n if (a == 0) c = 1;\r\n if (a == 10) c = 1;\r\n if (parseInt(b[7]) != c) return false;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport function crnValidator(culture: string): ValidatorFn {\r\n\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n const crn = control.value ? control.value.replace(/\\s+/g, ''): null;\r\n let no: boolean;\r\n switch (culture) {\r\n case 'cs-CZ':\r\n no = !testCrnCz(crn);\r\n return no ? {'crnNumber': {crn}} : null;\r\n default:\r\n return null;\r\n }\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[crnNumber]',\r\n providers: [{provide: NG_VALIDATORS, useExisting: CrnValidatorDirective, multi: true}]\r\n})\r\n\r\nexport class CrnValidatorDirective implements Validator, OnChanges {\r\n\r\n @Input('crnNumber') crnNumber: string;\r\n private valFn = Validators.nullValidator;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['crnNumber'];\r\n if (change) {\r\n let val = change.currentValue;\r\n this.valFn = crnValidator(val);\r\n } else {\r\n this.valFn = Validators.nullValidator;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n return this.valFn(control);\r\n }\r\n}","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'cmp-val-msg',\r\n templateUrl: '../../tpl/validation-msg.html',\r\n styleUrls: ['../../assets/styles/2-components/validation.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class ValidatorMessage {\r\n\r\n @Input() msg: string;\r\n\r\n get message(){\r\n let re = /(\\r\\n|\\r|\\n)/gi;\r\n return this.msg.replace(re, \"
\");\r\n }\r\n\r\n}","
\r\n
\r\n","/**\r\n * Module providing custom validation functionality\r\n * Do not introduce validators which are standard part of Angular please\r\n */\r\nimport {NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {CrnValidatorDirective} from \"./crn-validator.directive\";\r\nimport {VatValidatorDirective} from \"./vat-validator.directive\";\r\nimport {CompareValidatorDirective} from \"./compare-validator.directive\";\r\nimport {ValidatorMessage} from \"./validation-msg\";\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule],\r\n declarations: [\r\n CompareValidatorDirective,\r\n CrnValidatorDirective,\r\n VatValidatorDirective,\r\n ValidatorMessage\r\n ],\r\n exports: [\r\n CompareValidatorDirective,\r\n CrnValidatorDirective,\r\n VatValidatorDirective,\r\n ValidatorMessage\r\n ]\r\n})\r\n\r\nexport class ValidationModule {}","/**\r\n * @description\r\n * Component providing validation of Company Registration Number (IČ)\r\n * NOTE:\r\n * For best result use VIES API\r\n * https://github.com/amusarra/VIESCheckVatService\r\n */\r\nimport {Directive, Input, OnChanges, SimpleChanges} from '@angular/core';\r\nimport {AbstractControl, NG_VALIDATORS, Validator, ValidatorFn, Validators} from \"@angular/forms\";\r\n\r\n/**\r\n * @description\r\n * Validation of Czech DIČ - not too exact, but due to documentation there are many exceptions to 'CZ' + IČ\r\n * @param x\r\n * @returns {boolean}\r\n */\r\nexport function testVatCz(x: string): boolean {\r\n if (x) {\r\n let lengthTest = x.length > 7 && x.length <= 12;\r\n let patTest = /^CZ\\d{8,10}$/.test(x);\r\n return lengthTest && patTest;\r\n } else return false;\r\n}\r\n\r\nexport function vatValidator(culture: string): ValidatorFn {\r\n\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n const vat: string = control.value ? control.value.replace(/\\s+/g, ''): null;\r\n let no: boolean;\r\n switch (culture) {\r\n case 'cs-CZ':\r\n no = !testVatCz(vat);\r\n return no ? {'vatNumber': {vat}} : null;\r\n default:\r\n return null;\r\n }\r\n };\r\n}\r\n\r\n@Directive({\r\n selector: '[vatNumber]',\r\n providers: [{provide: NG_VALIDATORS, useExisting: VatValidatorDirective, multi: true}]\r\n})\r\n\r\nexport class VatValidatorDirective implements Validator, OnChanges {\r\n\r\n @Input('vatNumber') vatNumber: string;\r\n private valFn = Validators.nullValidator;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['vatNumber'];\r\n if (change) {\r\n let val = change.currentValue;\r\n this.valFn = vatValidator(val);\r\n } else {\r\n this.valFn = Validators.nullValidator;\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n return this.valFn(control);\r\n }\r\n}","import {Component} from \"@angular/core\";\r\nimport {Translatable} from \"../../../interfaces/general\";\r\nimport {SettingsService} from \"../../../services/settings.service\";\r\nimport {DataService} from \"../../../services/data.service\";\r\nimport {GeneralDialogRef} from \"../../general-dialog/common\";\r\n\r\n@Component({\r\n templateUrl: './wish-list-delete-dilaog.html'\r\n})\r\n\r\nexport class WishListDeleteDilaogComponent extends Translatable {\r\n\r\n constructor(dataSvc: DataService, seSvc: SettingsService,\r\n private dialogRef: GeneralDialogRef) {\r\n super(dataSvc, seSvc);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n closeDialog(yes: boolean) {\r\n this.dialogRef.close(yes);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","\r\n","import {Component, Input} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {WishListService} from \"../../services/wish-list-service\";\r\nimport {IWishListSelector, WishListItemDisplay, WishListType} from \"./common\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {ParameterService} from \"../../services/parameter.service\";\r\n\r\n\r\n@Component({\r\n selector: 'cmp-wish-list-item',\r\n templateUrl: './wish-list-item.html'\r\n})\r\n\r\nexport class WishListItemComponent extends Translatable {\r\n\r\n private _item: IWishListSelector;\r\n @Input() set item(value: IWishListSelector) {\r\n this._item = this.handleData(value);\r\n this.fillDisplayedProductModel(this._item);\r\n }\r\n\r\n get item(): IWishListSelector {\r\n return this._item;\r\n }\r\n\r\n @Input() viewType: WishListType = 'list';\r\n\r\n displayModel: WishListItemDisplay;\r\n\r\n productImagePathPrefix: string;\r\n\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private wlSvc: WishListService, private paramsSvc: ParameterService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.productImagePathPrefix = seSvc.settings.newImageServerUrl;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n private handleData(inpts: IWishListSelector): IWishListSelector {\r\n if (!inpts) return null;\r\n this.paramsSvc.handleParams(inpts.parameters);\r\n return inpts;\r\n }\r\n\r\n fillDisplayedProductModel(data: IWishListSelector): void {\r\n if (data.variant) {\r\n\r\n this.displayModel = {\r\n id: data.id,\r\n variantId: data.variant.id,\r\n seoUrl: data.variant.seoUrl,\r\n name: data.variant.name,\r\n masterCode: data.variant.masterCode,\r\n imagePath: data.variant.imagePath && data.variant.imagePath != 'notfound.jpg' ? data.variant.imagePath : data.variant.commonImagePath,\r\n imageTitle: data.variant.imageTitle,\r\n commonName: data.variant.commonName ? data.variant.commonName : `[${data.variant.name}]`,\r\n unit: data.variant.unit,\r\n size: data.variant.size,\r\n colorCoatingEffect: this.colorCoatingEffect,\r\n application: data.variant.application,\r\n shapeId: data.variant.shapeId,\r\n amount: data.amount\r\n };\r\n }\r\n }\r\n\r\n private get colorCoatingEffect(): string {\r\n let res = null;\r\n if (this.item) {\r\n let arr: string[] = [];\r\n if ((this.item.variant.color || this.item.variant.colorAB) && !this.item.variant.coating && !this.item.variant.effect) {\r\n arr.push((this.item.variant.colorAB ? this.item.variant.colorAB : this.item.variant.color).trim())\r\n }\r\n if (this.item.variant.coating) {\r\n arr.push(this.item.variant.coating)\r\n }\r\n if (this.item.variant.effect) {\r\n arr.push(this.item.variant.effect)\r\n }\r\n res = arr.join(' ');\r\n }\r\n return res;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n removeFromWishlist(id: number): void {\r\n this.dataSvc.dataLoading = true;\r\n this.wlSvc.removeItemFromWishList(id, 'variant')\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.dataSvc.dataLoading = false;\r\n }, () => {\r\n this.dataSvc.dataLoading = false;\r\n })\r\n }\r\n\r\n onAmountChanged(amount: number): void {\r\n if (!this.item.variant) return;\r\n\r\n this.dataSvc.dataLoading = true;\r\n this.wlSvc.itemChangeAmount(this.item.id, amount)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(() => {\r\n this.dataSvc.dataLoading = false;\r\n }, () => {\r\n this.dataSvc.dataLoading = false;\r\n })\r\n }\r\n\r\n}","
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {{displayModel.commonName}}\r\n \r\n\r\n
\r\n {{displayModel.shapeId}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{displayModel.colorCoatingEffect}}\r\n
\r\n\r\n
\r\n {{displayModel.size}}\r\n
\r\n\r\n
\r\n {{displayModel.application}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\nimport {Translatable} from \"../../interfaces/general\";\r\nimport {DataService} from \"../../services/data.service\";\r\nimport {SettingsService} from \"../../services/settings.service\";\r\nimport {WishListService} from \"../../services/wish-list-service\";\r\nimport {IWishListSelector} from \"./common\";\r\nimport {MenuService} from \"../../services/menu.service\";\r\n\r\n@Component({\r\n templateUrl: './wish-list-link.html',\r\n selector: 'cmp-wish-list-link',\r\n styleUrls: ['../../assets/styles/3-layout/header/header-wishlist.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class WishListLinkComponent extends Translatable {\r\n\r\n wishList: IWishListSelector[];\r\n\r\n constructor(public dataSvc: DataService, seSvc: SettingsService,\r\n private wishListSvc: WishListService, private menuSvc: MenuService) {\r\n super(dataSvc, seSvc);\r\n\r\n this.wishListSvc.onWishListsChanged\r\n .subscribe((res: IWishListSelector[]) => {\r\n this.wishList = res;\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.wishList = this.wishListSvc.wishList;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n toggleMenu(event: MouseEvent) {\r\n this.menuSvc.toggleMenu.emit(event);\r\n }\r\n}","\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n {{wishList?.length > 0 ? wishList?.length : 0}}\r\n
\r\n
\r\n","import {Injectable} from \"@angular/core\";\r\nimport {loadFromLocalStorage, removeFromLocalStorage, saveToLocalStorage} from \"../../helpers/cookie.helper\";\r\n\r\n\r\n@Injectable()\r\nexport class WishListTokenService {\r\n\r\n constructor() {\r\n this._token = loadFromLocalStorage(this._localStorageKey);\r\n }\r\n\r\n private _localStorageKey: string = 'wltkn';\r\n private _token: string;\r\n\r\n set token(value: string) {\r\n this._token = value;\r\n if (value && value.length) {\r\n saveToLocalStorage(this._localStorageKey, value);\r\n } else {\r\n removeFromLocalStorage(this._localStorageKey);\r\n }\r\n }\r\n\r\n get token(): string {\r\n if (this._token) {\r\n return this._token;\r\n }\r\n return null;\r\n }\r\n\r\n\r\n clear(): void {\r\n this.token = null;\r\n }\r\n\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {RouterModule} from \"@angular/router\";\r\nimport {ReactiveFormsModule} from \"@angular/forms\";\r\nimport {ValidationModule} from \"../validation/validation.module\";\r\nimport {CustomPipesModule} from \"../pipe/custom-pipes.module\";\r\nimport {AvailabilityModule} from \"../availability/availability.module\";\r\nimport {WishListLinkComponent} from \"./wish-list-link.component\";\r\nimport {WishListItemComponent} from \"./wish-list-item.component\";\r\nimport {WishListDeleteDilaogComponent} from \"./dialog/wish-list-delete-dilaog.component\";\r\nimport {GeneralDialogModule} from \"../general-dialog/general-dialog.module\";\r\nimport {ParameterService} from \"../../services/parameter.service\";\r\nimport {ProductAmountModule} from \"../product-amount/product-amount.module\";\r\nimport {ImageCacheBustModule} from \"../../directives/image-cache-bust.module\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ImageCacheBustModule,\r\n RouterModule,\r\n ReactiveFormsModule,\r\n ValidationModule,\r\n CustomPipesModule,\r\n AvailabilityModule,\r\n GeneralDialogModule,\r\n ProductAmountModule\r\n ],\r\n declarations: [\r\n WishListLinkComponent,\r\n WishListItemComponent,\r\n WishListDeleteDilaogComponent\r\n ],\r\n exports: [\r\n WishListLinkComponent,\r\n WishListItemComponent,\r\n WishListDeleteDilaogComponent\r\n ],\r\n providers:[\r\n ParameterService\r\n ]\r\n})\r\n\r\nexport class WishListModule {\r\n}","import {EventEmitter, Injectable, Injector} from \"@angular/core\";\r\nimport {\r\n CategoryConfig, CategoryDetailDataSelector, OrderByOptions, ProductFlagSelector,\r\n ProductRequest,\r\n ProductResponseModel\r\n} from \"../modules/category/interfaces\";\r\nimport {CategoryItemSelector, ParametricFilterRequest, StringIndexedObject} from \"../interfaces/general\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {BehaviorSubject, Subject} from \"rxjs\";\r\nimport {finalize, take, takeUntil} from \"rxjs/operators\";\r\nimport {ParameterMasterSelector, ParameterSelector} from \"../modules/product-parameter-filter/common\";\r\nimport {ProducerSelectorBrief} from \"../modules/producer-filter/common\";\r\nimport {DataService} from \"./data.service\";\r\nimport {ErrorService} from \"./error.service\";\r\nimport {SharedCategorySettings} from \"../shared-settings/shared-settings\";\r\nimport {SettingsService} from \"./settings.service\";\r\nimport {PageStateUrlService} from \"./page-state-url.service\";\r\nimport {toQueryStringParam} from \"../helpers/string.helper\";\r\nimport {Params} from \"@angular/router\";\r\n\r\ndeclare let StringView: any;\r\n\r\n@Injectable({\r\n providedIn: null, deps: [PageStateUrlService]\r\n})\r\nexport class CategoryService {\r\n\r\n\r\n private http: HttpClient;\r\n private dataSvc: DataService;\r\n private seSvc: SettingsService;\r\n private errSvc: ErrorService;\r\n private sharedCatSettingsSvc: SharedCategorySettings;\r\n private lastCategoryId: number;\r\n private lastRequestString: string = null;\r\n\r\n orderByOptions: OrderByOptions[];\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n //url parameters\r\n private url_pageSizeIndex: string = 'psi';\r\n private url_pageIndex: string = 'pi';\r\n private url_producer: string = 'pr';\r\n private url_showAvailableOnly: string = 'sao';\r\n private url_selectedPriceRangeMin: string = 'spr0';\r\n private url_selectedPriceRangeMax: string = 'spr1';\r\n private url_flags: string = 'pf';\r\n\r\n category: CategoryItemSelector;\r\n\r\n productFlags: Array;\r\n\r\n get categoryId(): number {\r\n return this.config.categoryId;\r\n }\r\n\r\n get pageSizeIndex(): number {\r\n return this.config.pageSizeIndex;\r\n }\r\n\r\n set pageSizeIndex(value: number) {\r\n this.config.pageSizeIndex = value;\r\n }\r\n\r\n\r\n get pageIndex(): number {\r\n return this.config.pageIndex;\r\n }\r\n\r\n set pageIndex(value: number) {\r\n this.config.pageIndex = value;\r\n }\r\n\r\n\r\n get pageSize(): number {\r\n return this.config.pageSize;\r\n }\r\n\r\n set pageSize(value: number) {\r\n this.config.pageSize = value;\r\n }\r\n\r\n\r\n get orderByIndex(): number {\r\n return this.config.orderByIndex;\r\n }\r\n\r\n set orderByIndex(value: number) {\r\n this.config.orderByIndex = value;\r\n }\r\n\r\n get cultureId(): number {\r\n return this.config.cultureId;\r\n }\r\n\r\n set cultureId(value: number) {\r\n this.config.cultureId = value;\r\n }\r\n\r\n get pageSizes(): any[] {\r\n return this.config.pageSizes;\r\n }\r\n\r\n set pageSizes(value: any[]) {\r\n this.config.pageSizes = value;\r\n }\r\n\r\n get selectedOrderBy(): OrderByOptions {\r\n return this.config.selectedOrderBy;\r\n }\r\n\r\n set selectedOrderBy(value: OrderByOptions) {\r\n this.config.selectedOrderBy = value;\r\n }\r\n\r\n get showAvailableOnly(): boolean {\r\n return this.config.showAvailableOnly;\r\n }\r\n\r\n set showAvailableOnly(value: boolean) {\r\n this.config.showAvailableOnly = value;\r\n }\r\n\r\n get paramsHash(): string {\r\n return this.config.paramsHash;\r\n }\r\n\r\n set paramsHash(value: string) {\r\n this.config.paramsHash = value;\r\n }\r\n\r\n get selectedProducers(): Array {\r\n return this.config.selectedProducers;\r\n }\r\n\r\n set selectedProducers(value: Array) {\r\n this.config.selectedProducers = value;\r\n }\r\n\r\n get params(): Params {\r\n return this.pageStateUrlSvc.getParameters();\r\n }\r\n\r\n get maxResultCount(): number {\r\n return this.seSvc.guideSettings?.maxResultCount;\r\n }\r\n\r\n\r\n constructor(private injector: Injector, private pageStateUrlSvc: PageStateUrlService) {\r\n //this.fillUrlFlags();\r\n this.http = this.injector.get(HttpClient);\r\n this.dataSvc = this.injector.get(DataService);\r\n this.errSvc = this.injector.get(ErrorService);\r\n this.sharedCatSettingsSvc = this.injector.get(SharedCategorySettings);\r\n this.seSvc = this.injector.get(SettingsService);\r\n\r\n this.orderByOptions = [\r\n {id: this.sharedCatSettingsSvc.Sorting.name_asc, name: 'product-order-name-asc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.name_desc, name: 'product-order-name-desc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.color_asc, name: 'product-order-color-asc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.color_desc, name: 'product-order-color-desc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.app_asc, name: 'product-order-app-asc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.app_desc, name: 'product-order-app-desc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.size_asc, name: 'product-order-size-asc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.size_desc, name: 'product-order-size-desc'},\r\n {id: this.sharedCatSettingsSvc.Sorting.rank, name: ''}\r\n ];\r\n\r\n this.init();\r\n }\r\n\r\n afterSvcInit: EventEmitter = new EventEmitter();\r\n filterDataChanged: BehaviorSubject = new BehaviorSubject(null);\r\n productDataChanged: EventEmitter = new EventEmitter();\r\n\r\n private _config: CategoryConfig;\r\n // private set config(value: CategoryConfig) {\r\n // this._config = value;\r\n // }\r\n\r\n get config(): CategoryConfig {\r\n return this._config;\r\n }\r\n\r\n\r\n availableOnlyCount: number;\r\n parameters: Array;\r\n paramMasters: Array;\r\n prices: Array;\r\n\r\n get priceMin(): number {\r\n if (!this.prices || !this.prices.length) {\r\n return null;\r\n }\r\n return Math.min(...this.prices);\r\n }\r\n\r\n get priceMax(): number {\r\n if (!this.prices || !this.prices.length) {\r\n return null;\r\n }\r\n return Math.max(...this.prices);\r\n }\r\n\r\n\r\n private _parametricFilter: ParametricFilterRequest;\r\n\r\n products: ProductResponseModel;\r\n\r\n private _producers: Array;\r\n set producers(value: Array) {\r\n this._producers = value;\r\n }\r\n\r\n get producers(): Array {\r\n return this._producers;\r\n }\r\n\r\n private init() {\r\n this.paramFilter = new ParametricFilterRequest(null);\r\n\r\n this._config = this.getNewConfig();\r\n\r\n this.fillData(null);\r\n\r\n this.afterSvcInit.emit();\r\n }\r\n\r\n private getNewConfig(): CategoryConfig {\r\n return new CategoryConfig({\r\n pageSizeIndex: 0,\r\n pageIndex: 1,\r\n selectedProducers: [],\r\n selectedPriceRange: [null, null],\r\n selectedFlags: [],\r\n selectedOrderBy: this.orderByOptions[0],\r\n orderByIndex: 8,\r\n filterIsActive: false,\r\n showAvailableOnly: false,\r\n paramsHash: this.paramFilter.paramsHash,\r\n pageSizes: this.seSvc.settings.pageSizes,\r\n maxResultCount: this.maxResultCount\r\n });\r\n }\r\n\r\n getProductRequest(): ProductRequest {\r\n let productRequest: ProductRequest = {\r\n categoryId: this.config.categoryId,\r\n cultureId: this.config.cultureId,\r\n pageIndex: this.config.pageIndex,\r\n pageSize: this.config.pageSizes[this.config.categoryId ? 0 : 1].value,\r\n priceRange: [\r\n this.config.selectedPriceRange[0],\r\n this.config.selectedPriceRange[1]\r\n ],\r\n orderByKeys: [this.orderByOptions[this.config.orderByIndex].id],\r\n producers: this.config.selectedProducers,\r\n productFlagsIds: this.config.selectedFlags,\r\n showAvailableOnly: this.config.showAvailableOnly,\r\n parametricFilter: this.paramFilter,\r\n maxResultCount: this.config.categoryId ? 0 : this.config.maxResultCount // only guid has restrict\r\n };\r\n\r\n return productRequest;\r\n }\r\n\r\n getCategoryDetailData(force: boolean = false): void {\r\n\r\n this.lastCategoryId = this.config.categoryId;\r\n\r\n this.setParamsIntoUrl();\r\n\r\n const req = this.getProductRequest();\r\n console.log('getCategoryDetailData', req);\r\n let productRequestString = new StringView(JSON.stringify(req)).toBase64();\r\n if (productRequestString == this.lastRequestString && !force) {\r\n this.filterDataChanged.next(null);\r\n return;\r\n }\r\n this.lastRequestString = productRequestString;\r\n\r\n this.dataSvc.dataLoading = true;\r\n this.http.get(`api/category/category-detail-data?qs=${productRequestString}`)\r\n .pipe(\r\n take(1),\r\n finalize(() => {\r\n this.dataSvc.dataLoading = false;\r\n }),\r\n takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this.fillData(res);\r\n this.productDataChanged.emit();\r\n this.filterDataChanged.next(null);\r\n });\r\n }\r\n\r\n\r\n private fillData(dataObject: CategoryDetailDataSelector): void {\r\n if (dataObject) {\r\n //this.productFlags = dataObject.productFlags;\r\n this.availableOnlyCount = dataObject.availableOnlyCount;\r\n if (this.availableOnlyCount == 0) {\r\n this.config.showAvailableOnly = false;\r\n }\r\n this.parameters = dataObject.parameters;//.filter(f => f.productCount > 0);\r\n this.paramMasters = dataObject.masterParameters;\r\n this.prices = dataObject.prices;\r\n\r\n //this.producers = dataObject.producers;\r\n this.products = dataObject.products;\r\n } else {\r\n this.productFlags = null;\r\n this.availableOnlyCount = null;\r\n this.parameters = null;\r\n this.paramMasters = null;\r\n this.prices = null;\r\n this.producers = null;\r\n this.products = null;\r\n }\r\n }\r\n\r\n getOnlyProductsData(): void {\r\n console.log('getCategoryDetailData', this.getProductRequest())\r\n //this method is called to retrieve data\r\n //so it is valid to presume all the page paramaters - pagesize, pageindex, producersfilter etc.\r\n //are set\r\n //so we can now save them into url\r\n this.setParamsIntoUrl();\r\n\r\n this.dataSvc.dataLoading = true;\r\n /**\r\n * Stringify the request and base64 encode it for better transmission\r\n */\r\n\r\n let productRequestString = toQueryStringParam(this.getProductRequest());\r\n this.http.get(`api/product?qs=${productRequestString}`)\r\n .pipe(\r\n finalize(() => {\r\n this.dataSvc.dataLoading = false;\r\n }),\r\n takeUntil(this.ngUnsubscribe)\r\n )\r\n .subscribe((res) => {\r\n this.products = res;\r\n this.productDataChanged.emit();\r\n },\r\n (err) => {\r\n this.dataSvc.dataLoading = false;\r\n this.errSvc.handleError(err)\r\n });\r\n }\r\n\r\n urlChangeOccured(id: any): void {\r\n let catId = parseInt(id);\r\n\r\n if (catId == this.lastCategoryId) {\r\n return;\r\n }\r\n\r\n this.init();\r\n\r\n this.config.categoryId = catId;\r\n this.config.cultureId = this.seSvc.culture.cultureId;\r\n }\r\n\r\n\r\n getSelectedFlags(): number[] {\r\n return this.config.selectedFlags;\r\n }\r\n\r\n setSelectedFlags(flags: number[]): void {\r\n this.config.selectedFlags = flags;\r\n }\r\n\r\n getPriceRange(): Array {\r\n if (!this.config.selectedPriceRange) {\r\n this.config.selectedPriceRange = [null, null];\r\n }\r\n return this.config.selectedPriceRange;\r\n }\r\n\r\n setPriceRange(numbers: Array) {\r\n if (!numbers || !Array.isArray(numbers) || numbers.length == 0) {\r\n numbers = [null, null];\r\n } else if (numbers.length == 1) {\r\n numbers = [numbers[0], null];\r\n } else {\r\n numbers = [numbers[0], numbers[1]];\r\n }\r\n this.config.selectedPriceRange = numbers;\r\n }\r\n\r\n set paramFilter(paramFilter: ParametricFilterRequest) {\r\n this._parametricFilter = paramFilter;\r\n }\r\n\r\n get paramFilter(): ParametricFilterRequest {\r\n return this._parametricFilter;\r\n }\r\n\r\n setParamsIntoUrl() {\r\n this.pageStateUrlSvc.setParams(this.createUrlParams());\r\n }\r\n\r\n private createUrlParams(): StringIndexedObject | number | Array> {\r\n const queryParams: StringIndexedObject | number | Array> = {};\r\n\r\n //paging properties:\r\n queryParams[this.url_pageSizeIndex] = this.pageSizeIndex > 0 ? this.pageSizeIndex : null;\r\n queryParams[this.url_pageIndex] = this.pageIndex > 1 ? this.pageIndex : null;\r\n //\r\n\r\n //parametric filter:\r\n this.paramFilter.convertToUrlParams(queryParams);\r\n //\r\n\r\n //producers:\r\n queryParams[this.url_producer] = null;\r\n if (this.selectedProducers && this.selectedProducers.length) {\r\n this.selectedProducers.sort();\r\n queryParams[this.url_producer] = this.selectedProducers;\r\n }\r\n //\r\n\r\n //show available only:\r\n queryParams[this.url_showAvailableOnly] = null;\r\n if (this.showAvailableOnly) {\r\n queryParams[this.url_showAvailableOnly] = 1;\r\n }\r\n //\r\n\r\n\r\n //selected price range - price filteringing\r\n queryParams[this.url_selectedPriceRangeMin] = null;\r\n if (this.config.selectedPriceRange\r\n && this.config.selectedPriceRange.length\r\n && this.config.selectedPriceRange[0] != null) {\r\n queryParams[this.url_selectedPriceRangeMin] = this.config.selectedPriceRange[0];\r\n }\r\n\r\n queryParams[this.url_selectedPriceRangeMax] = null;\r\n if (this.config.selectedPriceRange\r\n && this.config.selectedPriceRange.length > 1\r\n && this.config.selectedPriceRange[1] != null) {\r\n queryParams[this.url_selectedPriceRangeMax] = this.config.selectedPriceRange[1];\r\n }\r\n //\r\n\r\n\r\n //flags\r\n queryParams[this.url_flags] = null;\r\n if (this.config.selectedFlags && this.config.selectedFlags.length) {\r\n queryParams[this.url_flags] = this.config.selectedFlags;\r\n }\r\n //\r\n\r\n return queryParams;\r\n }\r\n\r\n\r\n loadDataFromQueryString() {\r\n const queryParams = this.pageStateUrlSvc.getParameters();\r\n\r\n //page properties:\r\n if (Number(queryParams[this.url_pageSizeIndex]) > -1) {\r\n this.pageSizeIndex = Number(queryParams[this.url_pageSizeIndex]);\r\n } else {\r\n this.pageSizeIndex = 0;\r\n }\r\n\r\n if (Number(queryParams[this.url_pageIndex]) > 0) {\r\n this.pageIndex = Number(queryParams[this.url_pageIndex]);\r\n } else {\r\n this.pageIndex = 1;\r\n }\r\n //\r\n\r\n //parametric filter:\r\n this.paramFilter = new ParametricFilterRequest(ParametricFilterRequest.getParamsFilterInitializerFromUrlParams(queryParams));\r\n //\r\n\r\n //producers:\r\n this.selectedProducers = [];\r\n\r\n if (queryParams[this.url_producer]) {\r\n let urlProducers: Array = >queryParams[this.url_producer];\r\n if (!Array.isArray(queryParams[this.url_producer])) {\r\n urlProducers = [queryParams[this.url_producer]];\r\n }\r\n this.selectedProducers = urlProducers.map((p) => Number(p));\r\n }\r\n //\r\n\r\n\r\n //show available only:\r\n this.showAvailableOnly = !!queryParams[this.url_showAvailableOnly];\r\n\r\n\r\n //selected price range - price filteringing\r\n this.config.selectedPriceRange = [null, null];\r\n if (queryParams[this.url_selectedPriceRangeMin] != null) {\r\n this.config.selectedPriceRange[0] = Number(queryParams[this.url_selectedPriceRangeMin]);\r\n }\r\n\r\n if (queryParams[this.url_selectedPriceRangeMax] != null) {\r\n this.config.selectedPriceRange[1] = Number(queryParams[this.url_selectedPriceRangeMax]);\r\n }\r\n\r\n //flags\r\n this.loadFlagsFromQueryString(queryParams);\r\n //\r\n }\r\n\r\n private loadFlagsFromQueryString(queryParams: StringIndexedObject | number | Array>) {\r\n let selectedFlags: Array = [];\r\n\r\n if (queryParams[this.url_flags]) {\r\n if (Array.isArray(queryParams[this.url_flags])) {\r\n selectedFlags = (queryParams[this.url_flags] as Array).map(i => Number(i));\r\n } else {\r\n selectedFlags = [Number(queryParams[this.url_flags])];\r\n }\r\n }\r\n\r\n this.config.selectedFlags = selectedFlags;\r\n }\r\n\r\n /*private fillUrlFlags() {\r\n this.url_flags = {};\r\n this.url_flags[this.sharedProductSettings.Flags.bNew] = 'fn';\r\n this.url_flags[this.sharedProductSettings.Flags.bAction] = 'fa';\r\n this.url_flags[this.sharedProductSettings.Flags.bSellOut] = 'fs';\r\n this.url_flags[this.sharedProductSettings.Flags.bRecommended] = 'fr';\r\n }*/\r\n\r\n\r\n}\r\n\r\n\r\n","import {Injectable} from \"@angular/core\";\r\n\r\ndeclare let clientCacheToken: string;\r\n@Injectable({ providedIn: 'root' })\r\nexport class ClientCacheTokenService {\r\n constructor() {\r\n }\r\n public getToken(): string {\r\n return clientCacheToken;\r\n }\r\n}","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {loadFromLocalStorage, saveToLocalStorage} from \"../helpers/cookie.helper\";\r\n\r\n@Injectable()\r\nexport class CompareProductsService {\r\n\r\n private storageKey = '--compareProducts--';\r\n private maxLength: number = 9;\r\n\r\n public productsChanged: EventEmitter;\r\n\r\n constructor() {\r\n this.productsChanged = new EventEmitter();\r\n }\r\n\r\n public addProduct(variantId: number): boolean {\r\n\r\n let prodIds: number[] = this.getProductIds();\r\n if (prodIds.length == this.maxLength) {\r\n return false;\r\n }\r\n\r\n let index = prodIds.indexOf(variantId);\r\n if (index > -1) {\r\n return null;\r\n }\r\n\r\n prodIds.push(variantId);\r\n\r\n prodIds = this.sanitize(prodIds);\r\n\r\n saveToLocalStorage(this.storageKey, prodIds);\r\n this.productsChanged.emit(prodIds);\r\n return true;\r\n }\r\n\r\n public removeProduct(variantId: number): boolean {\r\n\r\n let prodIds: number[] = this.getProductIds();\r\n\r\n if (!prodIds) {\r\n return null;\r\n }\r\n\r\n let index = prodIds.indexOf(variantId);\r\n if (index == -1) {\r\n return false;\r\n }\r\n\r\n prodIds = prodIds.filter(id => id != variantId);\r\n prodIds = this.sanitize(prodIds);\r\n\r\n saveToLocalStorage(this.storageKey, prodIds);\r\n this.productsChanged.emit(prodIds);\r\n return true;\r\n }\r\n\r\n public getProductIds(): number[] {\r\n let prodIds = loadFromLocalStorage(this.storageKey);\r\n if (!prodIds) {\r\n prodIds = [];\r\n }\r\n prodIds = this.sanitize(prodIds);\r\n return prodIds;\r\n }\r\n\r\n public get count(): number {\r\n return this.getProductIds().length;\r\n }\r\n\r\n public contains(productId: number): boolean {\r\n if (!productId) {\r\n return false;\r\n }\r\n return this.getProductIds().indexOf(productId) > -1;\r\n }\r\n\r\n private sanitize(ids: any[]): number[] {\r\n ids = ids.filter(val => !isNaN(parseFloat(val)) && isFinite(val));\r\n //saveToLocalStorage(this.storageKey, ids);\r\n return ids;\r\n }\r\n}","import {Injectable} from \"@angular/core\";\r\nimport {loadFromLocalStorage, removeFromLocalStorage, saveToLocalStorage} from \"../helpers/cookie.helper\";\r\nimport {AuthInfo} from \"../interfaces/general\";\r\n\r\ndeclare let StringView: any;\r\ndeclare let moment: any;\r\n\r\n@Injectable()\r\nexport class CredentialStorage {\r\n\r\n static get userLoggedIn(): boolean {\r\n return CredentialStorage.isAiTimeValid();\r\n }\r\n\r\n static get authInfo(): AuthInfo {\r\n let b64Ai: AuthInfo = loadFromLocalStorage('ai');\r\n if (!b64Ai) return null;\r\n\r\n let ais = JSON.parse(StringView.makeFromBase64(b64Ai));\r\n if (ais) {\r\n return ais;\r\n } else return null;\r\n }\r\n\r\n static set authInfo(value: AuthInfo) {\r\n let b64Ai = new StringView(JSON.stringify(value)).toBase64();\r\n saveToLocalStorage('ai', b64Ai);\r\n }\r\n\r\n constructor () { }\r\n\r\n static removeAuthInfo() {\r\n removeFromLocalStorage('ai');\r\n }\r\n\r\n static isAiTimeValid(): boolean {\r\n let mt = moment();\r\n let ai: AuthInfo = CredentialStorage.authInfo;\r\n if (!ai) return false;\r\n\r\n let mtValidTo = moment(ai.validTo);\r\n return mtValidTo > mt;\r\n }\r\n}\r\n","/**\r\n * @description\r\n * This service provides all common data fetching operations\r\n * Do not use for route specific fetching - e.g. product catalogue should fetch via it's own data service\r\n * to scale the file size of the JS\r\n */\r\nimport {EventEmitter, Injectable, Renderer2, RendererFactory2} from \"@angular/core\";\r\nimport {AuthInfo, BreadCrumbInfo, SoftErrorData} from \"../interfaces/general\";\r\nimport {Title, Meta} from \"@angular/platform-browser\";\r\nimport {loadFromSession} from \"../helpers/cookie.helper\";\r\nimport {ActivatedRoute, NavigationEnd, Params, ResolveEnd, Router} from \"@angular/router\";\r\nimport {SettingsService} from \"./settings.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {take, takeUntil} from \"rxjs/operators\";\r\nimport {BehaviorSubject, Subject} from \"rxjs\";\r\nimport {PageScrollService, ScrollChange} from \"./page-scroll.service\";\r\n\r\ndeclare let $: any;\r\n\r\n@Injectable()\r\nexport class DataService {\r\n public suggestSearchVisibleChanged: EventEmitter = new EventEmitter();\r\n\r\n private _userDisplayName: string;\r\n private pageTypeClassPrefix = 'page-type-';\r\n\r\n pageType: string = null;\r\n appInitialized: boolean = false;\r\n\r\n private _isHeadPageImg: boolean;\r\n public headPageImgChanged: EventEmitter = new EventEmitter();\r\n\r\n set isHeadPageImg(val: boolean) {\r\n if (val != undefined && this._isHeadPageImg != val) {\r\n this._isHeadPageImg = val;\r\n this.headPageImgChanged.emit(val);\r\n }\r\n }\r\n\r\n set tempHeadPageImg(val: boolean) {\r\n this.headPageImgChanged.emit(val);\r\n }\r\n\r\n get isHeadPageImg(): boolean {\r\n return this._isHeadPageImg == true;\r\n }\r\n\r\n get isHeaderFixed(): boolean {\r\n return this.hasHeaderClass('header--fixed');\r\n }\r\n\r\n get userDisplayName(): string {\r\n return this._userDisplayName;\r\n }\r\n\r\n set userDisplayName(value: string) {\r\n this._userDisplayName = value;\r\n }\r\n\r\n private _dataLoading: number = 0;\r\n get dataLoading(): boolean {\r\n return this._dataLoading > 0;\r\n }\r\n\r\n set dataLoading(value: boolean) {\r\n if (value) {\r\n this._dataLoading++;\r\n } else {\r\n this._dataLoading--;\r\n }\r\n if (this._dataLoading < 0) {\r\n this._dataLoading = 0;\r\n }\r\n }\r\n\r\n private _mainMenuHidden: boolean;\r\n get mainMenuHidden(): boolean {\r\n return this._mainMenuHidden;\r\n }\r\n\r\n set mainMenuHidden(value: boolean) {\r\n this._mainMenuHidden = value;\r\n }\r\n\r\n private _bcHidden: boolean = true;\r\n get bcHidden(): boolean {\r\n return this._bcHidden;\r\n }\r\n\r\n set bcHidden(value: boolean) {\r\n this._bcHidden = value;\r\n }\r\n\r\n private _showLoginForm: boolean = false;\r\n get showLoginForm(): boolean {\r\n return this._showLoginForm\r\n };\r\n\r\n set showLoginForm(val) {\r\n if (val) this._showForgottenPasswordForm = false;\r\n this._showLoginForm = val;\r\n };\r\n\r\n private _showForgottenPasswordForm: boolean = false;\r\n get showForgottenPasswordForm(): boolean {\r\n return this._showForgottenPasswordForm\r\n };\r\n\r\n set showForgottenPasswordForm(val) {\r\n if (val) this._showLoginForm = false;\r\n this._showForgottenPasswordForm = val;\r\n };\r\n\r\n public cultureExpanded: boolean;\r\n hideDistributor: boolean;\r\n\r\n cultureExpand(bln?: boolean): void {\r\n this.cultureExpanded = bln != undefined ? bln : !this.cultureExpanded\r\n if (this.cultureExpanded) {\r\n $('body').addClass('language-visible')\r\n } else {\r\n $('body').removeClass('language-visible')\r\n }\r\n }\r\n\r\n searchVisible: boolean;\r\n isSearchResponsive: boolean;\r\n\r\n searchShow(bln?: boolean, resp?: boolean): void {\r\n if (resp != undefined) this.isSearchResponsive = resp;\r\n this.searchVisible = bln != undefined ? bln : !this.searchVisible;\r\n if (this.isSearchResponsive) {\r\n if (this.searchVisible) {\r\n this.menuRespShow(false);\r\n $(\"body\").addClass(\"search-visible\");\r\n $(\"html\").addClass(\"locked\");\r\n } else {\r\n this.menuRespShow(true);\r\n $(\"body\").removeClass(\"search-visible\");\r\n $(\"html\").removeClass(\"locked\");\r\n }\r\n }\r\n this.suggestSearchVisibleChanged.emit(this.searchVisible);\r\n }\r\n\r\n menuRespVisible: boolean;\r\n\r\n menuRespShow(bln: boolean): void {\r\n this.menuRespVisible = bln;\r\n if (this.menuRespVisible) {\r\n $(\".responsive-menu\").addClass(\"responsive-menu--active\");\r\n $(\"html\").addClass(\"locked\");\r\n } else {\r\n $(\".responsive-menu\").removeClass(\"responsive-menu--active\");\r\n $(\".responsive-menu .menu__item.menu__item--active\").removeClass(\"menu__item--active\");\r\n $(\"html\").removeClass(\"locked\");\r\n }\r\n }\r\n\r\n breadcrumbChanged: BehaviorSubject;\r\n private bc: BreadCrumbInfo[];\r\n\r\n get domain(): string {\r\n //return this.seSvc.settings.cultures.filter(f => f.cultureId === this.seSvc.culture.cultureId)[0].cultureBoundDomain;\r\n return `${location.protocol}//${location.host}`;\r\n }\r\n\r\n modalDialogSource: string;\r\n\r\n private renderer2: Renderer2;\r\n\r\n pageTypeChanged: EventEmitter = new EventEmitter();\r\n\r\n anchor: string;\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(private seSvc: SettingsService, private titSvc: Title,\r\n private metaService: Meta, private router: Router, private rendererFactory2: RendererFactory2,\r\n private http: HttpClient, private pgScrollSvc: PageScrollService,\r\n private route: ActivatedRoute,) {\r\n\r\n this.pgScrollSvc.scrollChanged\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((YCord: ScrollChange) => {\r\n if (YCord.current == 0) {\r\n this.removeBodyClass('scroll-up');\r\n this.removeBodyClass('scroll-down');\r\n } else if (YCord.current - YCord.previous < 0) {\r\n this.removeBodyClass('scroll-down');\r\n this.addBodyClass('scroll-up');\r\n } else {\r\n this.removeBodyClass('scroll-up');\r\n this.addBodyClass('scroll-down');\r\n }\r\n\r\n const yTop = $('.header').length > 0 ? $('.header')[0].getBoundingClientRect().bottom + window.scrollY : 0;\r\n\r\n if (YCord.current > yTop) {\r\n this.addHeaderClass('header--fixed');\r\n if (YCord.current - YCord.previous < 0) {\r\n this.tempHeadPageImg = false;\r\n }\r\n } else {\r\n this.removeHeaderClass('header--fixed');\r\n }\r\n });\r\n\r\n this.renderer2 = this.rendererFactory2.createRenderer(null, null);\r\n\r\n this.breadcrumbChanged = new BehaviorSubject(null);\r\n\r\n let ai = loadFromSession('ai');\r\n if (ai) {\r\n this.userDisplayName = ai.displayName;\r\n }\r\n\r\n this.router.events.subscribe(res => {\r\n /*\r\n This we need to know what led to soft404 or soft 403\r\n */\r\n if (res instanceof ResolveEnd) {\r\n const afterRedirect = res.urlAfterRedirects;\r\n if (/^\\/error\\//i.test(afterRedirect) || /\\/warningi/i.test(afterRedirect)) {\r\n const data: SoftErrorData = {\r\n initialUrl: `${location.origin}${res.url}`,\r\n redirectedUrl: `${location.origin}${res.urlAfterRedirects}`\r\n };\r\n this.http.post(`api/error/logSoftRedirect`, data)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n })\r\n } else {\r\n let url = res.urlAfterRedirects;\r\n this.metaService.updateTag({property: 'og:url', content: `${this.domain}${url}`});\r\n }\r\n }\r\n /**\r\n * hiding main menu in cart\r\n */\r\n if (res instanceof NavigationEnd && res.urlAfterRedirects) {\r\n this.mainMenuHidden = /^\\/kosik\\//.test(res.urlAfterRedirects);\r\n this.bcHidden = /^\\/$/.test(res.urlAfterRedirects) || /^\\/kosik\\//.test(res.urlAfterRedirects);\r\n /**\r\n * setting rel=\"canonical\" - in case there is none in the data\r\n * for given component\r\n */\r\n let url = res.urlAfterRedirects;\r\n\r\n this.setBodyClass(res);\r\n this.pageTypeChanged.emit(this.pageType);\r\n\r\n document.querySelector('link[rel=\"canonical\"]').setAttribute('href', `${this.domain}${url}`);\r\n this.metaService.updateTag({property: 'og:url', content: `${this.domain}${url}`});\r\n /**\r\n * removing \r\n * if it was set previously\r\n */\r\n let robotsElement: HTMLMetaElement = this.metaService.getTag(`name=\"robots\"`);\r\n if (robotsElement) this.metaService.removeTagElement(robotsElement);\r\n\r\n /**\r\n * now we add it, based on settings from db for this url\r\n */\r\n for (let i = 0; i < this.seSvc.settings.noIndexRoutes.length; i++) {\r\n const rg = new RegExp(this.seSvc.settings.noIndexRoutes[i]);\r\n if (rg.test(url)) {\r\n this.setNoIndex();\r\n }\r\n }\r\n\r\n /**\r\n * setting GA re-marketing\r\n */\r\n if (this.seSvc.gaSettings.remarkId && (window).gtag) {\r\n (window).gtag('event', 'page_view', {\r\n 'send_to': this.seSvc.gaSettings.remarkId,\r\n 'items': [{\r\n 'google_business_vertical': 'retail'\r\n }]\r\n });\r\n }\r\n\r\n // kontakt v paticce na QRCode strance\r\n this.hideDistributor = /^\\/verification\\?/.test(res.urlAfterRedirects);\r\n }\r\n\r\n });\r\n\r\n this.route.fragment\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(res => {\r\n this.anchor = res;\r\n })\r\n\r\n this.route.queryParams\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n if (res?.refresh) {\r\n this.refreshData();\r\n }\r\n\r\n })\r\n }\r\n\r\n refreshData(): void {\r\n this.http.get(`api/general-logic/refresh-data`)\r\n .pipe(take(1))\r\n .subscribe((res) => {\r\n console.log(`refresh-data: ${res}`)\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n private setBodyClass(routerEvent: any): void {\r\n if (!routerEvent || !routerEvent.urlAfterRedirects) {\r\n return;\r\n }\r\n\r\n let splitted = routerEvent.urlAfterRedirects.split('/');\r\n if (!splitted || !splitted.length || splitted.length < 2) {\r\n return;\r\n }\r\n\r\n let pageType = splitted[1];\r\n if (!pageType) {\r\n pageType = 'index';\r\n }\r\n\r\n this.pageType = pageType;\r\n\r\n pageType = `${this.pageTypeClassPrefix}${pageType}`;\r\n\r\n document.body.classList.forEach((cls) => {\r\n if (cls.indexOf(this.pageTypeClassPrefix) == 0) {\r\n this.renderer2.removeClass(document.body, cls);\r\n }\r\n });\r\n\r\n this.renderer2.addClass(document.body, pageType);\r\n }\r\n\r\n private addBodyClass(val: string): void {\r\n let exist = false;\r\n document.body.classList.forEach((cls) => {\r\n if (cls.indexOf(val) == 0) {\r\n exist = true;\r\n }\r\n });\r\n\r\n if (!exist) {\r\n this.renderer2.addClass(document.body, val);\r\n }\r\n }\r\n\r\n private removeBodyClass(val: string): void {\r\n this.renderer2.removeClass(document.body, val);\r\n }\r\n\r\n private addHeaderClass(val: string): void {\r\n let exist = false;\r\n let headerEl = $('.header').length > 0 ? $('.header')[0] : null;\r\n if (headerEl) {\r\n headerEl.classList.forEach((cls: string) => {\r\n if (cls == val) {\r\n exist = true;\r\n }\r\n });\r\n }\r\n\r\n if (headerEl && !exist) {\r\n this.renderer2.addClass(headerEl, val);\r\n }\r\n }\r\n\r\n private removeHeaderClass(val: string): void {\r\n let headerEl = $('.header').length > 0 ? $('.header')[0] : null;\r\n if (headerEl) {\r\n this.renderer2.removeClass(headerEl, val);\r\n }\r\n }\r\n\r\n hasHeaderClass(val: string): boolean {\r\n let res = false;\r\n let headerEl = $('.header').length > 0 ? $('.header')[0] : null;\r\n if (headerEl) {\r\n headerEl.classList.forEach((cls: string) => {\r\n if (cls == val) {\r\n res = true;\r\n }\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n setBc(bcInfo: BreadCrumbInfo[], seoTitle?: string, description?: string): void {\r\n this.bc = bcInfo;\r\n if (bcInfo && bcInfo.length > 0) {\r\n let title = seoTitle || `${bcInfo[bcInfo.length - 1].displayName} - ${this.seSvc.settings.shopSeo.ShopTitle}`;\r\n this.setTitle(title);\r\n }\r\n this.setDescription(description);\r\n this.bcHidden = !(this.bc && this.bc.length);\r\n this.breadcrumbChanged.next(this.bc);\r\n }\r\n\r\n setPageHead(description: string, seoUrl: string, image?: string): void {\r\n /**\r\n * setting rel=\"canonical\"\r\n * with the one retrieved from entity data in component\r\n */\r\n\r\n document.querySelector('link[rel=\"canonical\"]').setAttribute('href', `${seoUrl}`);\r\n /**\r\n * setting \r\n */\r\n const metaDesc = description || '';\r\n this.metaService.updateTag({name: 'description', content: metaDesc});\r\n\r\n /* fb meta tags */\r\n this.metaService.updateTag({property: 'og:description', content: metaDesc});\r\n this.metaService.updateTag({property: 'og:url', content: seoUrl});\r\n if (image) this.metaService.updateTag({property: 'og:image', content: image || ''});\r\n }\r\n\r\n setMetaBaiduSogou(add: boolean) {\r\n if (add) {\r\n this.metaService.addTags([\r\n {name: 'baidu-site-verification', content: 'codeva-qhZbes4bgK'},\r\n {name: 'sogou_site_verification', content: 'nd15Rh8IV1'}\r\n ])\r\n } else {\r\n this.metaService.removeTag('name=baidu-site-verification');\r\n this.metaService.removeTag('name=sogou_site_verification');\r\n }\r\n }\r\n\r\n //\r\n // \r\n setPrevNextToHeader(seoUrl: string, attributeName: string, currPage: number, totalPages: number) {\r\n if (currPage > 1) {\r\n var url = new window.URL(seoUrl);\r\n if (currPage - 1 > 1)\r\n url.searchParams.set(attributeName, String(currPage - 1));\r\n else\r\n url.searchParams.delete(attributeName);\r\n\r\n if (document.querySelector('link[rel=\"prev\"]')) {\r\n document.querySelector('link[rel=\"prev\"]').setAttribute('href', `${url.toString()}`);\r\n } else {\r\n let link: HTMLLinkElement = document.createElement('link');\r\n link.setAttribute('rel', 'prev');\r\n document.head.appendChild(link);\r\n link.setAttribute('href', `${url.toString()}`);\r\n }\r\n } else {\r\n if (document.querySelector('link[rel=\"prev\"]')) {\r\n document.querySelector('link[rel=\"prev\"]').remove();\r\n }\r\n }\r\n\r\n if (currPage < totalPages) {\r\n var url = new window.URL(seoUrl);\r\n url.searchParams.set(attributeName, String(currPage + 1));\r\n\r\n if (document.querySelector('link[rel=\"next\"]')) {\r\n document.querySelector('link[rel=\"next\"]').setAttribute('href', `${url.toString()}`);\r\n } else {\r\n let link: HTMLLinkElement = document.createElement('link');\r\n link.setAttribute('rel', 'next');\r\n document.head.appendChild(link);\r\n link.setAttribute('href', `${url.toString()}`);\r\n }\r\n } else {\r\n if (document.querySelector('link[rel=\"next\"]')) {\r\n document.querySelector('link[rel=\"next\"]').remove();\r\n }\r\n }\r\n }\r\n\r\n setTitle(text: string, description?: string): void {\r\n this.titSvc.setTitle(text);\r\n this.metaService.updateTag({property: 'og:title', content: text});\r\n if (description) {\r\n this.metaService.updateTag({name: 'description', content: description});\r\n this.metaService.updateTag({property: 'og:description', content: description});\r\n }\r\n /*\r\n setting GA peg view\r\n */\r\n if (this.seSvc.gaSettings.analyticsId && (window).gtag) {\r\n (window).gtag('config', this.seSvc.gaSettings.analyticsId, {\r\n 'page_path': this.router.url,\r\n 'page_title': text\r\n });\r\n }\r\n /*\r\n setting GTM page_view\r\n */\r\n if (this.seSvc.gaSettings.gtmId) {\r\n (window).dataLayer = (window).dataLayer || [];\r\n (window).dataLayer.push({\r\n event: 'pageview',\r\n page: {\r\n path: this.router.url,\r\n title: text\r\n }\r\n });\r\n }\r\n }\r\n\r\n setDescription(description: string): void {\r\n if (description) {\r\n this.metaService.updateTag({name: 'description', content: description});\r\n this.metaService.updateTag({property: 'og:description', content: description});\r\n }\r\n }\r\n\r\n setNoIndex(): void {\r\n this.metaService.addTag({name: 'robots', content: 'noindex, nofollow'});\r\n }\r\n\r\n appendLinkedData(data: any, elId: string = 'mainEntityData'): void {\r\n let head = document.querySelector('head');\r\n let scriptElement: HTMLScriptElement = document.querySelector(`script[type=\"application/ld+json\"][id=\"${elId}\"]`);\r\n if (!scriptElement) {\r\n scriptElement = document.createElement('script');\r\n scriptElement.type = 'application/ld+json';\r\n scriptElement.id = elId;\r\n scriptElement.text = JSON.stringify(data);\r\n head.appendChild(scriptElement);\r\n } else {\r\n scriptElement.text = JSON.stringify(data);\r\n }\r\n }\r\n\r\n handleUrlParams(queryParams: Params, keysToRemove: string[]): Params {\r\n if (!queryParams) return queryParams;\r\n let newQS: Params = {};\r\n let keys = Object.keys(queryParams);\r\n keys.forEach(key => {\r\n if (!keysToRemove.find(x => x == key)) {\r\n newQS[key] = queryParams[key]\r\n }\r\n })\r\n return newQS;\r\n }\r\n\r\n}\r\n\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {isRouteSecured} from '../helpers/string.helper';\r\nimport {AuthInfo, CartTokenSelector, LoginEmitterMessage, LoginResult} from \"../interfaces/general\";\r\nimport {SettingsService} from \"./settings.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {HttpClient, HttpErrorResponse, HttpHeaders} from \"@angular/common/http\";\r\nimport {CredentialStorage} from \"./credential-storage.service\";\r\nimport {CartService} from \"../modules/cart/cart.service\";\r\nimport {removeFromSession} from \"../helpers/cookie.helper\";\r\nimport {CartTokenService} from \"../modules/cart/cart-token.service\";\r\nimport {take} from \"rxjs/operators\";\r\n\r\ndeclare let moment: any;\r\n\r\n// todo: UNIT TEST FOR THIS SERVICE\r\n\r\n@Injectable()\r\nexport class DigestService {\r\n\r\n badCredentialsMessage: string = 'bad credentials, login failed';\r\n errorType: string = 'error';\r\n\r\n userName: string;\r\n password: string;\r\n requestedUri: string;\r\n requestedMethod: string;\r\n\r\n loginStatus: EventEmitter;\r\n onLoginQuery: EventEmitter = new EventEmitter();\r\n\r\n constructor(private http: HttpClient, private seSvc: SettingsService,\r\n private router: Router, private cartSvc: CartService,\r\n private cartTokenSvc: CartTokenService) {\r\n\r\n let aiValid: boolean = false;\r\n\r\n const ai: AuthInfo = CredentialStorage.authInfo;\r\n if (ai) {\r\n const mt = moment();\r\n const mtValidTo = moment(ai.validTo);\r\n if (mtValidTo > mt) {\r\n aiValid = true;\r\n }\r\n }\r\n\r\n if (!aiValid) {\r\n /**\r\n * This means fresh start, nothing in session/local, we settle new values\r\n */\r\n DigestService.initNotSigned();\r\n } else {\r\n /**\r\n * this means there was full page reload, so we rather take stored values\r\n * */\r\n this.userName = ai.userName;\r\n }\r\n\r\n this.loginStatus = new EventEmitter();\r\n }\r\n\r\n private static initNotSigned(): void {\r\n CredentialStorage.removeAuthInfo();\r\n }\r\n\r\n login(userName: string, pwd: string, secret: string): void {\r\n\r\n this.requestedUri = 'api/login';\r\n this.requestedMethod = 'GET';\r\n\r\n this.userName = userName;\r\n this.password = pwd;\r\n let headers: HttpHeaders = this.getLoginHeaders();\r\n headers = headers.append('Captcha-Secret', secret);\r\n\r\n this.http.get(this.requestedUri, {headers: headers})\r\n .subscribe(\r\n (r) => {\r\n CredentialStorage.authInfo = {\r\n userName: this.userName,\r\n displayName: r.companyDisplayName,\r\n loggedIn: true,\r\n validTo: moment().add(r.tokenExpirationMinutes, 'minutes').format()\r\n };\r\n\r\n this.cartTokenSvc.cartTokens = r.cartTokens;\r\n\r\n if (!this.seSvc.bindCurrencyAndCultureToDomain) {\r\n this.seSvc.setCulture(r.cultureId, r.currencyId);\r\n }\r\n\r\n // BLOCK ADJUST CART\r\n\r\n /**\r\n here you can freely implement any cart-adjusting logic\r\n because on Flex there is an agreement that the carts should be allways merged\r\n I call merge method\r\n */\r\n\r\n\r\n if (r.cartTokens.length > 1) {\r\n const url = `api/cart/merge/${r.cartTokens[1].cartToken}/${r.cartTokens[0].cartToken}`;\r\n\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe((mr) => {\r\n this.cartTokenSvc.cartTokens = mr;\r\n setTimeout(() => {\r\n location.reload();\r\n }, 0);\r\n });\r\n } else {\r\n setTimeout(() => {\r\n location.reload();\r\n }, 0);\r\n }\r\n\r\n // BLOCK ADJUST CART\r\n },\r\n (e: HttpErrorResponse) => this.loginStatus.emit({\r\n type: this.errorType,\r\n message: this.badCredentialsMessage,\r\n data: e\r\n })\r\n );\r\n }\r\n\r\n logOut(routeToIndex?: boolean) {\r\n this.http.get(`api/signout`)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n CredentialStorage.removeAuthInfo();\r\n this.userName = undefined;\r\n this.password = undefined;\r\n removeFromSession('cadj');\r\n\r\n this.cartSvc.cleanCartOnLogout();\r\n this.cartTokenSvc.clear();\r\n\r\n let fwd = this.router.url;\r\n let url;\r\n if (routeToIndex || isRouteSecured(fwd)) {\r\n if (routeToIndex) {\r\n url = '/';\r\n } else {\r\n url = fwd ? `/warning?fwd=${fwd}` : '/warning';\r\n }\r\n location.href = url;\r\n } else {\r\n location.reload();\r\n }\r\n })\r\n }\r\n\r\n queryLogin(): void {\r\n this.onLoginQuery.emit();\r\n }\r\n\r\n private getLoginHeaders(): HttpHeaders {\r\n let result = `Basic username=\"${this.userName}\", password=\"${this.password}\"`;\r\n\r\n return new HttpHeaders({'Authorization': result});\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {Distributor, DistributorRequest} from \"../modules/distributor-box/common\";\r\nimport {Observable, Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {DistributorFilter} from \"../modules/distributor/common\";\r\n\r\n\r\n@Injectable()\r\nexport class DistributorService {\r\n\r\n onFavoriteChanged: EventEmitter = new EventEmitter();\r\n\r\n ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(private http: HttpClient, private sanitizer: DomSanitizer) {\r\n }\r\n\r\n getList(req: DistributorRequest): Observable {\r\n let sub = new Subject();\r\n\r\n this.http.post('api/distributor/list', req)\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe(res => {\r\n sub.next(this.handleDatas(res));\r\n });\r\n\r\n return sub;\r\n }\r\n\r\n handleLangData(inp: Distributor): void {\r\n if (inp && inp.langs && inp.langs.openHours) {\r\n inp.langs.openHours = this.sanitizer.bypassSecurityTrustHtml(inp.langs.openHours.toString());\r\n }\r\n }\r\n\r\n handlePhoneNumber(inp: Distributor): void {\r\n if (inp) {\r\n inp.phoneWithAreaCode = inp.phone.trim();\r\n if (inp.phoneAreaCode && inp.phoneWithAreaCode && inp.phoneWithAreaCode.indexOf('+') == -1) {\r\n inp.phoneWithAreaCode = `+${inp.phoneAreaCode} ${inp.phoneWithAreaCode}`\r\n }\r\n }\r\n }\r\n\r\n handleDatas(inp: Distributor[]): Distributor[] {\r\n if (inp && inp.length > 0) {\r\n inp.forEach(x => {\r\n this.handleLangData(x);\r\n this.handlePhoneNumber(x);\r\n })\r\n }\r\n return inp;\r\n }\r\n\r\n getDataForFilter(): Observable {\r\n return this.http.get('api/distributor/get-filter-data');\r\n }\r\n\r\n}","/**\r\n * manual reporting\r\n */\r\nimport {Injectable, Injector} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ErrorSelector} from \"../interfaces/general\";\r\n\r\n@Injectable()\r\nexport class ErrorService {\r\n\r\n constructor (private injector: Injector) {\r\n }\r\n\r\n handleError(error: any, subject?: string): void {\r\n const http: HttpClient = this.injector.get(HttpClient);\r\n let errorSelector: ErrorSelector;\r\n let tmpMessage = '', tmpStack = '';\r\n\r\n try {\r\n if (error.hasOwnProperty('message') || error.hasOwnProperty('stack')) {\r\n if (error.hasOwnProperty('message')) {\r\n tmpMessage = error['message']\r\n }\r\n if (error.hasOwnProperty('stack')) {\r\n tmpStack = error['stack']\r\n }\r\n errorSelector = {\r\n message: `message: ${tmpMessage} | stack: ${tmpStack}`,\r\n subject: subject || null\r\n }\r\n\r\n } else {\r\n errorSelector = {\r\n message: JSON.stringify(error),\r\n subject: subject || null\r\n }\r\n }\r\n } catch (e) {\r\n errorSelector = {\r\n message: error.toString(),\r\n subject: subject || null\r\n };\r\n }\r\n\r\n http.post('api/error/report', errorSelector)\r\n .subscribe(() => {});\r\n }\r\n}","import {Injectable} from \"@angular/core\";\r\nimport {ReCaptchaV3Service} from \"ng-recaptcha\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {catchError, finalize, map, switchMap, take} from \"rxjs/operators\";\r\nimport {Observable, of} from \"rxjs\";\r\nimport {CaptchaResponseModel} from \"../modules/register-b2c/common\";\r\nimport {ErrorService} from \"./error.service\";\r\nimport {GeneralDialogConfig} from \"../modules/general-dialog/general-dialog-config\";\r\nimport {StringIndexedObject} from \"../interfaces/general\";\r\nimport {SettingsService} from \"./settings.service\";\r\nimport {GeneralDialogService} from \"../modules/general-dialog/general-dialog.service\";\r\nimport {FallBackCaptchaDialog} from \"../modules/fall-back-captcha/fall-back-captcha.dialog\";\r\nimport {DataService} from \"./data.service\";\r\n\r\nexport interface FlexCaptchaExecuteResult {\r\n success: boolean;\r\n score: number;\r\n secret: string;\r\n}\r\n\r\n@Injectable()\r\nexport class FlexCaptchaService {\r\n\r\n sen: StringIndexedObject = {};\r\n private scoreThreshold: number = 0.3;\r\n\r\n constructor(private recaptchaV3Service: ReCaptchaV3Service, private http: HttpClient, private errSvc: ErrorService,\r\n private seSvc: SettingsService, private generalDialogSvc: GeneralDialogService,\r\n private dataSvc: DataService) {\r\n this.sen = this.seSvc.sen;\r\n }\r\n\r\n executeCaptcha(idToken: string, logToken: string): Observable {\r\n return this.recaptchaV3Service.execute(idToken)\r\n .pipe(\r\n switchMap((captchaResponse: string) => this.onCaptchaExecuted(captchaResponse, logToken)),\r\n take(1)\r\n )\r\n }\r\n\r\n private onCaptchaExecuted(captchaResponse: string, logToken: string): Observable {\r\n this.dataSvc.dataLoading = true;\r\n return this.http.post('api/captcha/verify', {UserResponse: captchaResponse})\r\n .pipe(\r\n catchError((err: any) => {\r\n this.errSvc.handleError(err, logToken);\r\n return of({success: false, score: 0, secret: null});\r\n }),\r\n switchMap(res => {\r\n if (res.score < this.scoreThreshold) {\r\n return this.showFallBackDialog(res, logToken);\r\n } else {\r\n return this.normalFlowObservable(res, logToken);\r\n }\r\n }),\r\n take(1),\r\n finalize(() => this.dataSvc.dataLoading = false),\r\n )\r\n }\r\n\r\n normalFlowObservable(res: CaptchaResponseModel | FlexCaptchaExecuteResult, logToken: string): Observable {\r\n if (!res.success) {\r\n this.errSvc.handleError(res, logToken);\r\n }\r\n\r\n let result: FlexCaptchaExecuteResult = {\r\n success: res.success,\r\n score: res.score,\r\n secret: res.success ? res.secret : null\r\n }\r\n return of(result)\r\n }\r\n\r\n showFallBackDialog(res: CaptchaResponseModel | FlexCaptchaExecuteResult, logToken: string) {\r\n this.errSvc.handleError(`Captcha fallback engaged, score ${res.score}`, logToken);\r\n\r\n const config: GeneralDialogConfig = {\r\n data: res,\r\n cssClassModifier: 'login',\r\n isCloseAble: false,\r\n title: this.sen['captcha-fallback-title']\r\n };\r\n return this.generalDialogSvc.open(FallBackCaptchaDialog, config)\r\n .afterClosed\r\n .pipe(map(res => res))\r\n }\r\n\r\n}\r\n","/**\r\n * serves as a reporter of unhandled JS errors\r\n * errors are reported to tblLog with sSubject = 'GEH JS Error'\r\n */\r\nimport {ErrorHandler, Injectable, Injector} from '@angular/core';\r\nimport {DigestService} from \"./digest.service\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ErrorSelector} from \"../interfaces/general\";\r\n\r\n@Injectable()\r\nexport class GlobalErrorHandler implements ErrorHandler {\r\n constructor(private injector: Injector) {\r\n }\r\n\r\n handleError(error: any): void {\r\n const digestSvc: DigestService = this.injector.get(DigestService);\r\n const http: HttpClient = this.injector.get(HttpClient);\r\n let errorSelector: ErrorSelector;\r\n let tmpMessage = '', tmpStack = '';\r\n\r\n try {\r\n if (error.hasOwnProperty('message') || error.hasOwnProperty('stack')) {\r\n if (error.hasOwnProperty('message')) {\r\n tmpMessage = error['message']\r\n }\r\n if (error.hasOwnProperty('stack')) {\r\n tmpStack = error['stack']\r\n }\r\n errorSelector = {\r\n message: `message: ${tmpMessage} | stack: ${tmpStack}`\r\n }\r\n\r\n } else {\r\n errorSelector = {\r\n message: JSON.stringify(error)\r\n }\r\n }\r\n\r\n } catch (e) {\r\n errorSelector = {\r\n message: error.toString()\r\n };\r\n }\r\n http.post('api/error/report', errorSelector)\r\n .subscribe(() => {});\r\n\r\n if (error.status && error.status == 403) {\r\n digestSvc.logOut();\r\n }\r\n throw error;\r\n }\r\n\r\n}","import {Injectable} from \"@angular/core\";\r\nimport {PageStateUrlService} from \"./page-state-url.service\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\nimport {filter, take} from \"rxjs/operators\";\r\nimport {\r\n NavigationCancel,\r\n NavigationEnd,\r\n Router\r\n} from \"@angular/router\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {LandingPageSelector} from \"../interfaces/general\";\r\n\r\n\r\n@Injectable()\r\nexport class LandingPageService {\r\n\r\n isLandingPage: BehaviorSubject = new BehaviorSubject(false);\r\n allLandingPages: BehaviorSubject> = new BehaviorSubject>(null);\r\n\r\n actualLandingPageData: LandingPageSelector = null;\r\n\r\n urlRelatedLandingPages: BehaviorSubject> = new BehaviorSubject>(null);\r\n\r\n constructor(private pageStateSvc: PageStateUrlService, private router: Router,\r\n private http: HttpClient) {\r\n\r\n\r\n this.router.events\r\n .pipe(filter((evt) => {\r\n if (evt instanceof NavigationEnd || evt instanceof NavigationCancel) {\r\n return true;\r\n }\r\n return false;\r\n }))\r\n .subscribe(() => {\r\n this.checkParams();\r\n this.checkAvailableLandingPages();\r\n });\r\n\r\n this.allLandingPages.subscribe(() => {\r\n this.checkParams();\r\n this.checkAvailableLandingPages();\r\n })\r\n\r\n this.getData();\r\n\r\n }\r\n\r\n private getData(): void {\r\n this.http.get>('api/landing-page/get-all-for-active-domain').pipe(\r\n take(1)\r\n ).subscribe((res) => {\r\n this.allLandingPages.next(res);\r\n });\r\n }\r\n\r\n private checkParams(): void {\r\n const params = this.pageStateSvc.getParameters();\r\n if (params && params['lanpag']) {\r\n this.setActualLandingPageData(Number(params['lanpag']));\r\n this.isLandingPage.next(true);\r\n } else {\r\n this.actualLandingPageData = null;\r\n this.isLandingPage.next(false);\r\n }\r\n }\r\n\r\n private setActualLandingPageData(id: number): void {\r\n this.actualLandingPageData = this.allLandingPages?.value?.find(lp => lp.id == id);\r\n }\r\n\r\n\r\n private checkAvailableLandingPages() {\r\n if (!this.allLandingPages || !this.allLandingPages.value || !this.allLandingPages.value.length) {\r\n this.urlRelatedLandingPages.next(null);\r\n return;\r\n }\r\n\r\n\r\n const url = this.router.url.split('#')[0].split('?')[0];\r\n const server = `${location.protocol}//${location.host}`;\r\n\r\n let related = this.allLandingPages.value.filter((lp) => {\r\n if (!lp.systemUrl.startsWith(server)) {\r\n return false;\r\n }\r\n\r\n const sysUrl = lp.systemUrl.substr(server.length).split('#')[0].split('?')[0];\r\n\r\n if (url == sysUrl) {\r\n\r\n if (lp.systemUrl == this.actualLandingPageData?.systemUrl) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (related && !related.length) {\r\n related = null;\r\n }\r\n\r\n this.urlRelatedLandingPages.next(related);\r\n }\r\n}\r\n\r\n\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class MenuService {\r\n toggleMenu: EventEmitter = new EventEmitter();\r\n hideMenu: EventEmitter = new EventEmitter();\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {asyncScheduler, fromEvent} from \"rxjs\";\r\nimport {throttleTime} from \"rxjs/operators\";\r\n\r\nexport interface ScrollChange {\r\n previous: number;\r\n current: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageScrollService {\r\n\r\n public scrollChanged: EventEmitter = new EventEmitter();\r\n\r\n private lastScroll: number = 0;\r\n\r\n constructor() {\r\n fromEvent(window, \"scroll\")\r\n .pipe(throttleTime(200, asyncScheduler, {trailing: true}))\r\n .subscribe(() => {\r\n this.scrollEvent();\r\n });\r\n }\r\n\r\n private scrollEvent(): void {\r\n const currentScroll = window.pageYOffset;\r\n if (currentScroll == 0 || currentScroll != this.lastScroll) {\r\n this.scrollChanged.emit({\r\n previous: this.lastScroll,\r\n current: currentScroll\r\n });\r\n this.lastScroll = currentScroll;\r\n }\r\n }\r\n\r\n public recalculateScroll(): void {\r\n this.scrollEvent();\r\n }\r\n\r\n\r\n}","import {Injectable} from \"@angular/core\";\r\nimport {ActivatedRoute, Params, QueryParamsHandling, Router} from \"@angular/router\";\r\nimport {StringIndexedObject} from \"../interfaces/general\";\r\n\r\n@Injectable({providedIn: 'any'})\r\nexport class PageStateUrlService {\r\n private params: Params;\r\n\r\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {\r\n this.activatedRoute.queryParams.subscribe((params) => {\r\n this.params = params;\r\n });\r\n }\r\n\r\n getParameters(): StringIndexedObject | number | Array> {\r\n return this.params;\r\n }\r\n\r\n getParam(paramName: string): any {\r\n return this.params[paramName];\r\n }\r\n\r\n setParams(queryParams: StringIndexedObject | number | Array>) {\r\n const handling: QueryParamsHandling = 'merge';\r\n this.navigate(queryParams, handling);\r\n }\r\n\r\n private navigate(queryParams: StringIndexedObject | number | Array>, queryParamsHandling: QueryParamsHandling) {\r\n //type QueryParamsHandling = 'merge' | 'preserve' | ''\r\n\r\n this.router.navigate([], {\r\n relativeTo: this.activatedRoute,\r\n queryParams: queryParams,\r\n queryParamsHandling: queryParamsHandling,\r\n // preserve the existing query params in the route\r\n skipLocationChange: false,\r\n // do not trigger navigation\r\n replaceUrl: false\r\n });\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {filter} from \"rxjs/operators\";\r\nimport {NavigationStart, Router} from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PageStateService {\r\n\r\n navigatedUrl: string;\r\n\r\n navigationStartEvent: EventEmitter = new EventEmitter();\r\n\r\n isBrowserBackButton: boolean = false;\r\n\r\n\r\n\r\n\r\n\r\n pageTopOffset: number;\r\n\r\n scrollReason: ScrollReason;\r\n\r\n constructor(private router: Router) {\r\n this.navigatedUrl = this.router.url;\r\n this.router.events\r\n .pipe(filter(evt => evt instanceof NavigationStart))\r\n .subscribe((ev: NavigationStart) => {\r\n this.navigatedUrl = ev.url;\r\n if (ev && ev.restoredState) {\r\n this.isBrowserBackButton = true;\r\n } else {\r\n this.isBrowserBackButton = false;\r\n }\r\n\r\n this.navigationStartEvent.emit(ev);\r\n });\r\n\r\n }\r\n}\r\n\r\nexport enum ScrollReason {\r\n Detail,\r\n Pager\r\n}","import {Injectable} from \"@angular/core\";\r\nimport {ParameterProductSelector} from \"../modules/product/common\";\r\n//import {ParamValueType} from \"../modules/product-variants/common\";\r\nimport {SettingsService} from \"./settings.service\";\r\nimport {StringIndexedObject} from \"../interfaces/general\";\r\nimport {ParamValueType} from \"../modules/product-variants/common\";\r\n\r\n@Injectable()\r\nexport class ParameterService {\r\n\r\n sen: StringIndexedObject = {};\r\n\r\n constructor(public seSvc: SettingsService) {\r\n this.sen = this.seSvc.sen;\r\n }\r\n\r\n handleParams(params: ParameterProductSelector[]): void {\r\n if (params) {\r\n\r\n // size symbol\r\n let sizeSymbol = params.find(p => p.code == 'size_symbol');\r\n if (sizeSymbol) {\r\n const sizeSymbolDispValue = this.sen[`app-param-size-symbol-${sizeSymbol.parameterValues[0].numericValue}`];\r\n sizeSymbol.parameterValue.displayValue = sizeSymbolDispValue;\r\n if (sizeSymbol.parameterValues?.length) sizeSymbol.parameterValues[0].displayValue = sizeSymbolDispValue;\r\n }\r\n\r\n let sizeParams = params.filter(p => p.code && p.code.indexOf('size') == 0);\r\n\r\n if (sizeParams?.length > 0) {\r\n let sizeCalculatedItem = this.calculateSizeParameterValue(sizeParams, sizeSymbol);\r\n // prod.parameters = prod.parameters?.filter(p => !p.code || p.code?.indexOf('size') == -1)\r\n if (sizeCalculatedItem) params.push(sizeCalculatedItem);\r\n }\r\n }\r\n }\r\n\r\n calculateSizeParameterValue(sizeParams: ParameterProductSelector[], sizeSymbol: ParameterProductSelector): ParameterProductSelector {\r\n\r\n const sizeMM = sizeParams.find(x => x.code == 'ssize_filtr_mm');//'size_mm'\r\n const sizeSS = sizeParams.find(x => x.code == 'size_filtr_ss');\r\n //const size1 = sizeParams.find(x => x.accId == 'M_VEL1647');\r\n const size2 = sizeParams.find(x => x.accId == 'M_VEL2647');\r\n const size3 = sizeParams.find(x => x.accId == 'M_VEL3647');\r\n\r\n let sizeCalculated: string = null;\r\n\r\n if (sizeMM && !size2 && !size3) {\r\n sizeCalculated = this.formatValue(sizeMM.parameterValue?.displayValue);\r\n } else if (sizeSS && !size2 && !size3) {\r\n sizeCalculated = this.formatValue(sizeSS.parameterValue?.displayValue, true);\r\n } else if (sizeMM && size2 && !size3) {\r\n sizeCalculated = `${this.formatValue(size2.parameterValue?.displayValue)}x${this.formatValue(sizeMM.parameterValue?.displayValue)}`;\r\n } else if (sizeSS && size2 && !size3) {\r\n sizeCalculated = `${this.formatValue(size2.parameterValue?.displayValue)}x${this.formatValue(sizeSS.parameterValue?.displayValue)}`;\r\n } else {\r\n\r\n }\r\n\r\n if (sizeSymbol && sizeCalculated) {\r\n if (sizeSymbol.parameterValue?.numericValue == ParamValueType.SS) {\r\n sizeCalculated = sizeSymbol.parameterValue?.displayValue + sizeCalculated;\r\n } else {\r\n sizeCalculated += sizeSymbol.parameterValue?.displayValue;\r\n }\r\n }\r\n\r\n if (sizeCalculated) {\r\n const sizeSymbol = sizeParams.find(x => x.code == 'size_symbol');\r\n let sizeCalculatedItem: ParameterProductSelector = JSON.parse(JSON.stringify(sizeSymbol));\r\n sizeCalculatedItem.code = 'size_calculated';\r\n sizeCalculatedItem.parameterName = this.sen['app-param-size-label'];\r\n sizeCalculatedItem.parameterValue.displayValue = sizeCalculated;\r\n sizeCalculatedItem.parameterValues.forEach(v => v.displayValue = sizeCalculated);\r\n\r\n return sizeCalculatedItem;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public formatValue(inp: string, aloveZeroes: boolean = false, maxDecimalPlaces: number = 1, forceDecPlaceZero: boolean = false): string {\r\n let res = inp;\r\n let num = parseFloat(inp);\r\n if (!isNaN(num) && (num || !aloveZeroes)) {\r\n if (maxDecimalPlaces == 0) {\r\n for (let i = 1; i <= 4; i++) {\r\n let powVal = num * (10 ** i);\r\n if (powVal == Math.floor(powVal)) {\r\n maxDecimalPlaces = i;\r\n break;\r\n }\r\n }\r\n let isDecimal = num != Math.floor(num);\r\n res = isDecimal ? num.toFixed(maxDecimalPlaces) : num.toFixed();\r\n } else {\r\n let isDecimal = (num * 10) != (Math.floor(num) * 10);\r\n res = isDecimal ? num.toFixed(maxDecimalPlaces) : num.toFixed();\r\n if (!forceDecPlaceZero && isDecimal) {\r\n res = parseFloat(res).toString();\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n}","/**\r\n * Provides route guarding mechanism for secured routes\r\n * @description\r\n * If the user wants to navigate by any means to the route, which is secured by this guard\r\n * the guard either brings up the dialog with warning or it navigates to \"you must login\" route\r\n * https://angular.io/docs/ts/latest/api/router/index/CanActivate-interface.html\r\n */\r\nimport {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, Router, RouterStateSnapshot} from \"@angular/router\";\r\nimport {CredentialStorage} from \"./credential-storage.service\";\r\nimport {AuthInfo} from \"../interfaces/general\";\r\n\r\n@Injectable()\r\nexport class RouteGuardService {\r\n\r\n dummy: any;\r\n\r\n constructor(private router: Router) {\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {\r\n this.dummy = route;//just to disable \"'route' is declared but its value is never read\" compile-time error\r\n\r\n let fwd = state.url;\r\n let url = fwd ? `/warning?fwd=${fwd}` : '/warning';\r\n\r\n let canGo: boolean = CredentialStorage.authInfo != null;\r\n let ai: AuthInfo = CredentialStorage.authInfo;\r\n\r\n if (canGo && ai) {\r\n if (!CredentialStorage.isAiTimeValid()) {\r\n canGo = false;\r\n }\r\n }\r\n\r\n if (!canGo) {\r\n this.router.navigateByUrl(url)\r\n .then(() => {\r\n return false\r\n });\r\n } else return true;\r\n }\r\n\r\n}","import {EventEmitter, Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class SearchService {\r\n searchInputChanged: EventEmitter = new EventEmitter();\r\n\r\n fireSearchInputChanged(phrase: string): void {\r\n this.searchInputChanged.emit(phrase);\r\n }\r\n}","/**\r\n * @description\r\n * Serves as a container for front end application settings\r\n * Place only things that are really needed\r\n */\r\nimport {Injectable} from '@angular/core';\r\nimport {\r\n BrandSelector,\r\n Culture,\r\n GaSelector,\r\n HeurekaSelector,\r\n DomainSelector,\r\n SettingItem,\r\n Settings,\r\n SeznamSelector,\r\n StringIndexedObject, CartTokenSelector, UrlRedirectSelector, GuideSettings\r\n} from \"../interfaces/general\";\r\nimport {SharedAppSettings} from \"../shared-settings/shared-settings\";\r\nimport {loadFromSession, removeFromSession, saveToSession} from \"../helpers/cookie.helper\";\r\nimport {IntegrationService} from \"../interceptors/integration.service\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {map, take, tap} from \"rxjs/operators\";\r\nimport {CartTokenService} from \"../modules/cart/cart-token.service\";\r\nimport {ReplaySubject} from \"rxjs\";\r\nimport {IGoogleMapSettings} from \"../modules/google-map/interfaces/IGoogleMapSettings\";\r\nimport {RegistrationData} from \"../modules/register-common/common\";\r\n\r\nlet settings: Settings =\r\n {\r\n preAuthToLocal: true,\r\n preAuthLocalExpiration: 12,\r\n // cartAdjustAction: \"ask\",\r\n pageSizes: [{value: 16}, {value: 20}],\r\n countries: [\r\n {\r\n id: 326,\r\n name: 'Česká republika',\r\n code2L: 'CZ'\r\n },\r\n {\r\n id: 462,\r\n name: 'Slovenská republika',\r\n code2L: 'SK'\r\n }\r\n ],\r\n cultures: [\r\n {\r\n code: \"cs-CZ\",\r\n cultureId: 34,\r\n name: \"Česky\",\r\n currencyCode: \"CZK\",\r\n currencySymbol: \"Kč\",\r\n translationKey: \"app-czech\",\r\n htmlLangAttribute: \"cs\"\r\n },\r\n {\r\n code: \"en-US\",\r\n name: \"English\",\r\n currencyCode: \"USD\",\r\n currencySymbol: \"$\",\r\n cultureId: 50,\r\n translationKey: \"app-english\",\r\n htmlLangAttribute: \"en\"\r\n },\r\n ],\r\n validationPatterns: {\r\n email: /^[_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*(\\+[_a-zA-Z0-9-]+)?@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*(\\.[a-zA-Z]{2,8})$/,\r\n naturalNumber: /^[1-9][0-9]*$/,\r\n decimalNumber: /^(\\d*[.,])?\\d+$/,\r\n formattedNaturalNumber: /^(\\d{1,3} (\\d{3} )*\\d{3}|\\d{1,3})$|^[1-9][0-9]*$/,\r\n phone: {\r\n 34: /^(\\+420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,\r\n 50: /^(\\+420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/\r\n },\r\n zipCodeCz: /^\\d{3}\\s?\\d{2}$/\r\n },\r\n localDomain: \"http://localhost/Preciosa\",\r\n currentServerUrl: \"\",\r\n decimalSettings: null,\r\n currencies: {\r\n 1: \"$\",\r\n 3: \"Kč\"\r\n },\r\n currencyCodes: {\r\n 1: \"USD\",\r\n 3: \"CZK\"\r\n },\r\n shopSeo: null,\r\n routesWithDefaultSeo: [/^$/, /^\\/$/],\r\n assetPathPrefix: 'app/common/classic',\r\n newImageServerUrl: null,\r\n noIndexRoutes: [],\r\n termsAndConditions: {},\r\n isGoogleBot: false\r\n };\r\n\r\nexport function GetLocaleFactory(seSvc: SettingsService) {\r\n return seSvc.getLocale()\r\n}\r\n\r\n@Injectable()\r\nexport class SettingsService {\r\n\r\n passwordRegExpPattern: string;\r\n passwordPolicyMessage: string\r\n\r\n startUpSettingsAreSet: ReplaySubject = new ReplaySubject(1);//puvodne jsem mel EventEmitter,\r\n //ale Tomas Novosad narazil na problem, kdy k subscribu v CookiesConsentService\r\n //dochazelo az po emitnuti v setStartUpSettings\r\n //tak to menim na ReplySubject, tam to lupne dycky\r\n\r\n urlRedirects: UrlRedirectSelector[] = [];\r\n\r\n get cartMaxStepSessionKey(): string {\r\n return 'cartMaxStep';\r\n }\r\n\r\n private _cacheBustKey: string;\r\n get cacheBustKey(): string {\r\n return this._cacheBustKey;\r\n }\r\n\r\n set cacheBustKey(value: string) {\r\n this._cacheBustKey = value;\r\n }\r\n\r\n private _availabilitySetting: AvailabilitySetting;\r\n get availabilitySetting(): AvailabilitySetting {\r\n return this._availabilitySetting;\r\n }\r\n\r\n set availabilitySetting(value: AvailabilitySetting) {\r\n this._availabilitySetting = value;\r\n }\r\n\r\n private _sen: StringIndexedObject;\r\n get sen(): StringIndexedObject {\r\n return this._sen;\r\n }\r\n\r\n set sen(value: StringIndexedObject) {\r\n this._sen = value;\r\n }\r\n\r\n private _culture: Culture;\r\n get culture(): Culture {\r\n return this._culture;\r\n }\r\n\r\n set culture(value: Culture) {\r\n this._culture = value;\r\n }\r\n\r\n get shortDateFormat(): string {\r\n let res: string = 'shortDate';\r\n switch (this._culture?.cultureId) {\r\n case 34:\r\n res = 'd.M.yyyy';\r\n break;\r\n case 50:\r\n res = 'dd/MMM/yyyy';\r\n break;\r\n case 28:\r\n res = 'dd/MMM/yyyy';\r\n break;\r\n }\r\n return res;\r\n }\r\n\r\n private _gaSettings: GaSelector;\r\n get gaSettings(): GaSelector {\r\n return this._gaSettings;\r\n }\r\n\r\n set gaSettings(value: GaSelector) {\r\n this._gaSettings = value;\r\n }\r\n\r\n private _seznamSettings: SeznamSelector;\r\n get seznamSettings(): SeznamSelector {\r\n return this._seznamSettings;\r\n }\r\n\r\n set seznamSettings(value: SeznamSelector) {\r\n this._seznamSettings = value;\r\n }\r\n\r\n private _heurekaSettings: HeurekaSelector;\r\n get heurekaSettings(): HeurekaSelector {\r\n return this._heurekaSettings;\r\n }\r\n\r\n set heurekaSettings(value: HeurekaSelector) {\r\n this._heurekaSettings = value;\r\n }\r\n\r\n private _brand: BrandSelector;\r\n get brand(): BrandSelector {\r\n return this._brand;\r\n }\r\n\r\n set brand(value: BrandSelector) {\r\n this._brand = value;\r\n }\r\n\r\n private _domains: DomainSelector[];\r\n get domains(): DomainSelector[] {\r\n return this._domains;\r\n }\r\n\r\n set domains(value: DomainSelector[]) {\r\n this._domains = value;\r\n }\r\n\r\n private _activeUrlInfo: DomainSelector;\r\n get activeUrlInfo(): DomainSelector {\r\n return this._activeUrlInfo;\r\n }\r\n\r\n set activeUrlInfo(value: DomainSelector) {\r\n this._activeUrlInfo = value;\r\n }\r\n\r\n private _bindCurrencyAndCultureToDomain: boolean;\r\n get bindCurrencyAndCultureToDomain(): boolean {\r\n return this._bindCurrencyAndCultureToDomain;\r\n }\r\n\r\n set bindCurrencyAndCultureToDomain(value: boolean) {\r\n this._bindCurrencyAndCultureToDomain = value;\r\n }\r\n\r\n private _guideSetts: GuideSettings;\r\n\r\n get guideSettings(): GuideSettings {\r\n return this._guideSetts;\r\n }\r\n\r\n settings: Settings;\r\n domainCacheBust: string;\r\n sharedAppDefaults: StringIndexedObject;\r\n currencyId: number;\r\n\r\n private _modalOpen: boolean = false;\r\n get modalOpen(): boolean {\r\n return this._modalOpen;\r\n }\r\n\r\n set modalOpen(value: boolean) {\r\n this._modalOpen = value;\r\n }\r\n\r\n private _registCfgDataKey: string = 'regData';\r\n\r\n get registCfgData(): RegistrationData {\r\n return loadFromSession(this._registCfgDataKey);\r\n\r\n // store data valid for 2 hours\r\n /*const dt: RegistrationData = loadFromLocalStorage(this._registCfgDataKey);\r\n if (!dt) return null;\r\n let diffHour = dt.timestamp ? Math.floor((new Date().getTime() - new Date(dt.timestamp).getTime()) / 1000 / 60 / 60) : 0;\r\n if (diffHour > 2) {\r\n removeFromLocalStorage(this._registCfgDataKey);\r\n return null;\r\n } else {\r\n this.registCfgData = dt;\r\n return dt;\r\n }*/\r\n }\r\n\r\n set registCfgData(val: RegistrationData) {\r\n if (val) {\r\n saveToSession(this._registCfgDataKey, val);\r\n } else {\r\n removeFromSession(this._registCfgDataKey);\r\n }\r\n // put timestamp for check 2 hour validity of stores data\r\n /*if (val) val.timestamp = new Date();\r\n saveToLocalStorage(this._registCfgDataKey, val);*/\r\n }\r\n\r\n constructor(saSvc: SharedAppSettings, private http: HttpClient,\r\n private iSvc: IntegrationService, private cartTokenSvc: CartTokenService) {\r\n\r\n this.settings = settings;\r\n this.sharedAppDefaults = saSvc.Defaults;\r\n\r\n this.culture = this.settings.cultures.find((c) => c.cultureId == this.sharedAppDefaults['CultureId']);\r\n this.currencyId = this.sharedAppDefaults['CurrencyId'];\r\n\r\n this.domainCacheBust = encodeURIComponent(`${location.protocol}//${location.hostname}`);\r\n let cult = loadFromSession('cult');\r\n if (cult) {\r\n this.culture = cult;\r\n }\r\n let curr = loadFromSession('curr');\r\n if (curr) {\r\n this.currencyId = curr;\r\n }\r\n\r\n this.iSvc.httpRegional.cultureId = this.culture.cultureId;\r\n\r\n }\r\n\r\n setCulture(cultureId: number, currencyId: number) {\r\n this.setCultureAndReload(false, cultureId, currencyId);\r\n }\r\n\r\n setCultureAndReload(reload: boolean, cultureId: number, currencyId: number, stayOnPOage: boolean = false) {\r\n this.justSetCultureAndCurrency(cultureId, currencyId)\r\n\r\n if (this.bindCurrencyAndCultureToDomain) {\r\n this.activeUrlInfo = this.domains.filter(f => f.cultureId === cultureId)[0];\r\n location.href = stayOnPOage? `${this.activeUrlInfo.url}${location.pathname}${location.search}` : this.activeUrlInfo.url;\r\n } else {\r\n if (reload) location.reload();\r\n }\r\n }\r\n\r\n private justSetCultureAndCurrency(cultureId: number, currencyId: number): void {\r\n this.culture = this.settings.cultures.filter(c => c.cultureId == cultureId)[0];\r\n saveToSession('cult', this.culture);\r\n\r\n this.currencyId = currencyId;\r\n saveToSession('curr', this.currencyId);\r\n\r\n SettingsService.setHtmlLangAttribute(this.culture.htmlLangAttribute);\r\n }\r\n\r\n private setStartUpSettings(settingMap: Map): void {\r\n this.activeUrlInfo = settingMap.get('ActiveServerUrl');\r\n this.settings.noIndexRoutes = JSON.parse(settingMap.get('NoIndexRoutes'));\r\n this.settings.currentServerUrl = this.activeUrlInfo.url;\r\n this.domains = settingMap.get('Domains');\r\n this.bindCurrencyAndCultureToDomain = JSON.parse(settingMap.get('BindCurrencyAndCultureToDomain'));\r\n this.settings.decimalSettings = JSON.parse(settingMap.get('DecimalSettings'));\r\n this.settings.shopSeo = JSON.parse(settingMap.get('ShopSeoSettings'))[this.activeUrlInfo.cultureId];\r\n this.settings.assetPathPrefix = settingMap.get('AssetPathPrefix');\r\n this.settings.newImageServerUrl = settingMap.get('ImageServer');\r\n this.availabilitySetting = settingMap.get('Availability');\r\n this.cacheBustKey = settingMap.get('ImageCacheBust');\r\n this.gaSettings = settingMap.get('GaSettings');\r\n this.seznamSettings = settingMap.get('SeznamSettings');\r\n this.heurekaSettings = settingMap.get('HeurekaSettings');\r\n this.brand = JSON.parse(settingMap.get('Logo'));\r\n this.GoogleMapSettings = settingMap.get('GoogleMapSettings');\r\n this.passwordRegExpPattern = settingMap.get(\"PasswordRegExpPattern\");\r\n this.passwordPolicyMessage = settingMap.get('PasswordPolicyMessage');\r\n this.settings.termsAndConditions = JSON.parse(settingMap.get('TermsAndConditionsUrl'));\r\n this.settings.isGoogleBot = JSON.parse(settingMap.get('IsGoogleBot'));\r\n\r\n this.setInitialCurrencyAndCultureByUrl();\r\n SettingsService.setHtmlLangAttribute(this.culture.htmlLangAttribute);\r\n\r\n this.startUpSettingsAreSet.next();\r\n }\r\n\r\n private setUpApplication(input: any): any {\r\n const m = SettingsService.makeSettingsMap(input['StartUpSettings']);\r\n this.justSetCultureAndCurrency(input['CultureId'], input['CurrencyId']);\r\n this.setStartUpSettings(m);\r\n return this.makeSentenceObject(input['Translations']);\r\n }\r\n\r\n private setInitialCurrencyAndCultureByUrl(): void {\r\n if (this.bindCurrencyAndCultureToDomain) {\r\n this.culture = this.settings.cultures.filter(f => f.cultureId === this.activeUrlInfo.cultureId)[0];\r\n this.currencyId = this.activeUrlInfo.currencyId;\r\n }\r\n saveToSession('cult', this.culture);\r\n saveToSession('curr', this.currencyId);\r\n this.iSvc.httpRegional.cultureId = this.culture.cultureId;\r\n this.iSvc.httpRegional.currencyId = this.currencyId;\r\n }\r\n\r\n //the first called function\r\n //synchronous\r\n getCartTokens(): Promise {\r\n\r\n const url = `api/cart-token?dcb=${this.domainCacheBust}`;\r\n\r\n return this.http.get>(url).toPromise()\r\n .then((res) => {\r\n this.cartTokenSvc.cartTokens = res;\r\n return this.getAllTranslations();\r\n });\r\n }\r\n\r\n getUrlRedirects() {\r\n this.http.get('api/settings/url-redirects')\r\n .pipe(take(1))\r\n .subscribe(res => {\r\n this.urlRedirects = res;\r\n });\r\n }\r\n\r\n private getAllTranslations(): any {\r\n let options = {headers: new HttpHeaders()};\r\n options.headers.set('F-CC', `cu:${this.culture.cultureId},cy:${this.currencyId}`);\r\n\r\n this.iSvc.httpRegional = {\r\n cultureId: this.culture.cultureId,\r\n currencyId: this.currencyId\r\n };\r\n\r\n let result = this.http.get(`api/lang?dcb=${this.domainCacheBust}`, options)\r\n .pipe(\r\n map(res => this.setUpApplication(res)),\r\n tap(res => {\r\n this.sen = res;\r\n })\r\n );\r\n return result.toPromise()\r\n }\r\n\r\n getLocale(): string {\r\n return this.culture.code;\r\n }\r\n\r\n private makeSentenceObject(input: Object[]): Object {\r\n let tmp: StringIndexedObject = {};\r\n if (input) {\r\n input.forEach((e: any) => tmp[e['Key']] = e['Value']);\r\n }\r\n return tmp;\r\n }\r\n\r\n private static makeSettingsMap(items: SettingItem[]): Map {\r\n let m: Map = new Map();\r\n for (let item of items) {\r\n m.set(item.Key, item.Value);\r\n }\r\n return m;\r\n }\r\n\r\n private static setHtmlLangAttribute(lang: string): void {\r\n document.querySelector('html').setAttribute('lang', lang);\r\n }\r\n\r\n getUrl(inp: string): string {\r\n if (!inp || !inp.trim()) return null;\r\n if (/https?:\\/\\//.test(inp)) return inp;\r\n return null;\r\n // const domain = /localhost/.test(location.hostname) || /^.*\\.loc$/.test(location.hostname) ? `${location.protocol}//${location.hostname}` : this.settings.currentServerUrl;\r\n // return (domain + (inp[0] != '/' ? '/' : '') + inp);\r\n }\r\n\r\n private googleMapSettings: IGoogleMapSettings = null;\r\n\r\n public get GoogleMapSettings(): IGoogleMapSettings {\r\n return this.googleMapSettings;\r\n }\r\n\r\n public set GoogleMapSettings(value: IGoogleMapSettings) {\r\n this.googleMapSettings = value;\r\n }\r\n\r\n}\r\n\r\nexport enum AvailabilitySetting {\r\n onlyText = 'onlyText',\r\n onlyNumber = 'onlyNumber',\r\n both = 'both'\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {AddressSelector, CompanySelector, UserContactSummarySelector, UserSelector} from \"../modules/address/common\";\r\nimport {take} from \"rxjs/operators\";\r\nimport {ErrorService} from \"./error.service\";\r\nimport {EMPTY, Observable, ReplaySubject} from \"rxjs\";\r\nimport {CredentialStorage} from \"./credential-storage.service\";\r\nimport {ChangePasswordModel, ChangePasswordResult, UserUpdateResponseSelector} from \"../modules/account/common\";\r\n\r\n\r\n@Injectable()\r\nexport class UserService {\r\n\r\n loaded: ReplaySubject = new ReplaySubject(1);\r\n\r\n //region public fields\r\n company: CompanySelector = null;\r\n invoiceAddress: AddressSelector = null;\r\n deliveryAddresses: Array = [];\r\n user: UserSelector = null;\r\n //endregion\r\n\r\n //region public properties\r\n get preferredDeliveryAddress(): AddressSelector {\r\n return this.deliveryAddresses?.find(da => da.isPreferred);\r\n }\r\n\r\n //endregion\r\n\r\n\r\n constructor(private http: HttpClient, private eSvc: ErrorService) {\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n this.reloadUserContactInfo();\r\n }\r\n\r\n reloadUserContactInfo(): void {\r\n if (CredentialStorage.userLoggedIn) {\r\n let url = `api/account/getCompleteUserInfo`;\r\n this.http.get(url)\r\n .pipe(take(1))\r\n .subscribe(\r\n (res) => {\r\n this.company = res.company;\r\n this.invoiceAddress = res.invoiceAddress;\r\n this.deliveryAddresses = res.deliveryAddresses;\r\n this.user = res.user;\r\n this.loaded.next(true);\r\n },\r\n (err) => {\r\n this.eSvc.handleError({error: err, request: {url: url, method: 'get'}}, 'getUserContactInfo');\r\n this.loaded.next(false);\r\n }\r\n );\r\n }\r\n }\r\n\r\n saveData(usr: UserSelector): Observable {\r\n if (CredentialStorage.userLoggedIn) {\r\n let url = `api/account/save-user-data`;\r\n return this.http.post(url, usr);\r\n } else {\r\n return EMPTY;\r\n }\r\n }\r\n\r\n changePassword(req: ChangePasswordModel): Observable {\r\n if (CredentialStorage.userLoggedIn) {\r\n const url = 'api/account/changepwd';\r\n return this.http.post(url, req);\r\n } else {\r\n return EMPTY;\r\n }\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {CredentialStorage} from \"./credential-storage.service\";\r\nimport {Observable, Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {WishListTokenService} from \"../modules/wish-list/wish-list-token.service\";\r\nimport {IWishListReqPaggingSelector, IWishListReqSelector, IWishListReqSortPaggingSelector, IWishListSelector, WishListSource} from \"../modules/wish-list/common\";\r\nimport {PagedResponse} from \"../interfaces/general\";\r\n\r\n\r\ndeclare let StringView: any;\r\n\r\n@Injectable()\r\nexport class WishListService {\r\n\r\n private _wishList: IWishListSelector[];\r\n onWishListsChanged: EventEmitter = new EventEmitter();\r\n onWishListItemDeleted: EventEmitter = new EventEmitter();\r\n onWishListAmountChanged: EventEmitter = new EventEmitter();\r\n\r\n get wishList(): IWishListSelector[] {\r\n return this._wishList;\r\n }\r\n\r\n private ngUnsubscribe: Subject = new Subject();\r\n\r\n constructor(private http: HttpClient, private wltSvc: WishListTokenService\r\n /*private googleTagManagerSvc: GoogleTagManagerService*/) {\r\n\r\n this._wishList = null;\r\n this.getWishList()\r\n .pipe(takeUntil(this.ngUnsubscribe))\r\n .subscribe((res) => {\r\n this._wishList = res;\r\n this.onWishListsChanged.emit(this._wishList);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ngUnsubscribe.next();\r\n this.ngUnsubscribe.complete();\r\n }\r\n\r\n\r\n getWishList(): EventEmitter {\r\n\r\n let emitter = new EventEmitter();\r\n\r\n if (CredentialStorage.userLoggedIn) {\r\n let url = 'api/wish-list/list-user';\r\n this.http.get(url)\r\n .subscribe(res => {\r\n emitter.emit(res);\r\n });\r\n } else {\r\n this.http.post('api/wish-list/list', {token: this.wltSvc.token})\r\n .subscribe(res => {\r\n emitter.emit(res);\r\n });\r\n }\r\n return emitter;\r\n }\r\n\r\n getWishListVariantPagging(pending: IWishListReqSortPaggingSelector): Observable {\r\n pending.type = 'variant';\r\n if (CredentialStorage.userLoggedIn) {\r\n return this.http.post>('api/wish-list/pagging-user', pending);\r\n } else {\r\n pending.token = this.wltSvc.token;\r\n return this.http.post>('api/wish-list/pagging', pending);\r\n }\r\n }\r\n\r\n getWishListMasterPagging(pending: IWishListReqPaggingSelector): Observable {\r\n pending.type = 'master';\r\n if (CredentialStorage.userLoggedIn) {\r\n return this.http.post>('api/wish-list/pagging-user', pending);\r\n } else {\r\n pending.token = this.wltSvc.token;\r\n return this.http.post>('api/wish-list/pagging', pending);\r\n }\r\n }\r\n\r\n addItemToWishList(request: IWishListReqSelector): EventEmitter {\r\n let emitter = new EventEmitter();\r\n\r\n if (!request.variantId || !request.variantKey) {\r\n emitter.emit(null);\r\n }\r\n\r\n if (this.isOnWishList(request.variantId, request.variantKey)) {\r\n emitter.emit(null);\r\n }\r\n\r\n if (CredentialStorage.userLoggedIn) {\r\n this.http.post(`api/wish-list/add-item-user`, request)\r\n .subscribe(res => {\r\n this._wishList = res;\r\n this.onWishListsChanged.emit(this._wishList);\r\n emitter.emit(this._wishList);\r\n });\r\n } else {\r\n request.token = this.wltSvc.token;\r\n this.http.post(`api/wish-list/add-item`, request)\r\n .subscribe(res => {\r\n this._wishList = res;\r\n if (res && res.length > 0 && res[0].token && res[0].token != this.wltSvc.token) {\r\n this.wltSvc.token = res[0].token;\r\n }\r\n this.onWishListsChanged.emit(this._wishList);\r\n emitter.emit(this._wishList);\r\n });\r\n }\r\n\r\n return emitter;\r\n }\r\n\r\n itemChangeAmount(id: number, amount: number): EventEmitter {\r\n let emitter = new EventEmitter();\r\n\r\n let pending: IWishListReqSelector = {\r\n id: id,\r\n amount: amount\r\n };\r\n\r\n if (CredentialStorage.userLoggedIn) {\r\n this.http.post(`api/wish-list/change-count-user`, pending)\r\n .subscribe(res => {\r\n if (res) this.onWishListAmountChanged.emit();\r\n emitter.emit(res);\r\n });\r\n } else {\r\n pending.token = this.wltSvc.token;\r\n this.http.post(`api/wish-list/change-count`, pending)\r\n .subscribe(res => {\r\n if (res) this.onWishListAmountChanged.emit();\r\n emitter.emit(res);\r\n });\r\n }\r\n\r\n return emitter;\r\n }\r\n\r\n\r\n removeFromWishList(variantId?: number, variantKey?: number): EventEmitter {\r\n\r\n let emitter = new EventEmitter();\r\n\r\n if (!variantId || !variantKey) {\r\n emitter.emit(null);\r\n }\r\n\r\n if (!this.isOnWishList(variantId, variantKey)) {\r\n emitter.emit(null);\r\n }\r\n\r\n let pending: IWishListReqSelector = {\r\n variantId: variantId,\r\n variantKey: variantKey\r\n };\r\n const source: WishListSource = variantId > 0 ? 'variant' : variantKey > 0 ? 'master' : null;\r\n\r\n if (CredentialStorage.userLoggedIn) {\r\n this.http.post(`api/wish-list/remove-item-user`, pending)\r\n .subscribe(res => {\r\n this._wishList = res;\r\n this.onWishListItemDeleted.emit(source);\r\n this.onWishListsChanged.emit(this._wishList);\r\n emitter.emit(this._wishList);\r\n });\r\n } else {\r\n pending.token = this.wltSvc.token;\r\n this.http.post(`api/wish-list/remove-item`, pending)\r\n .subscribe(res => {\r\n this._wishList = res;\r\n this.onWishListItemDeleted.emit(source);\r\n this.onWishListsChanged.emit(this._wishList);\r\n emitter.emit(this._wishList);\r\n });\r\n }\r\n\r\n return emitter;\r\n }\r\n\r\n removeItemFromWishList(id: number, source: WishListSource): EventEmitter {\r\n\r\n let emitter = new EventEmitter();\r\n\r\n let pending: IWishListReqSelector = {\r\n id: id\r\n };\r\n\r\n if (CredentialStorage.userLoggedIn) {\r\n this.http.post(`api/wish-list/remove-item-user`, pending)\r\n .subscribe(res => {\r\n this._wishList = res;\r\n this.onWishListItemDeleted.emit(source);\r\n this.onWishListsChanged.emit(this._wishList);\r\n emitter.emit(this._wishList);\r\n });\r\n } else {\r\n pending.token = this.wltSvc.token;\r\n this.http.post(`api/wish-list/remove-item`, pending)\r\n .subscribe(res => {\r\n this._wishList = res;\r\n this.onWishListItemDeleted.emit(source);\r\n this.onWishListsChanged.emit(this._wishList);\r\n emitter.emit(this._wishList);\r\n });\r\n }\r\n\r\n return emitter;\r\n }\r\n\r\n isOnWishList(variantId?: number, variantKey?: number): boolean {\r\n if (!variantId && !variantKey) {\r\n return false;\r\n }\r\n\r\n if (!this._wishList || !this._wishList?.length) {\r\n return false;\r\n }\r\n if (variantId) {\r\n return this._wishList.find(x => x.variantId == variantId) != undefined;\r\n } else {\r\n return this._wishList.find(x => x.variantKey == variantKey && !x.variantId) != undefined;\r\n }\r\n }\r\n\r\n adjust(): Observable {\r\n let pending: IWishListReqSelector = {\r\n token: this.wltSvc.token\r\n };\r\n return this.http.post('api/wish-list/adjust', pending);\r\n }\r\n\r\n delete(): EventEmitter {\r\n let emitter = new EventEmitter();\r\n\r\n let pending: IWishListReqSelector = {};\r\n\r\n if (CredentialStorage.userLoggedIn) {\r\n this.http.post(`api/wish-list/delete-user`, pending)\r\n .subscribe(res => {\r\n if (res) {\r\n this._wishList = [];\r\n this.onWishListsChanged.emit(this._wishList);\r\n }\r\n emitter.emit(res);\r\n });\r\n } else {\r\n pending.token = this.wltSvc.token;\r\n this.http.post(`api/wish-list/delete`, pending)\r\n .subscribe(res => {\r\n if (res) {\r\n this._wishList = [];\r\n this.onWishListsChanged.emit(this._wishList);\r\n }\r\n emitter.emit(res);\r\n });\r\n }\r\n\r\n return emitter;\r\n }\r\n\r\n}","import {Injectable} from \"@angular/core\";\r\n///////////////////////////////////////////\r\n\r\n/**\r\n * Automatically generated based on AccountModule from SharedSettings dll\r\n */\r\n\r\n@Injectable()\r\nexport class SharedAccountSettings \r\n {\r\nContactType = {\r\nPhone: 'Phone',\r\nMobile: 'Mobile',\r\nEmail: 'E-mail',\r\nFax: 'Fax'\r\n};\r\nInvoice = {\r\nInvoiceStatus: {\r\n\r\n}\r\n}\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * Automatically generated based on AddressModule from SharedSettings dll\r\n */\r\n\r\n@Injectable()\r\nexport class SharedAddressSettings \r\n {\r\nAddressType = {\r\nInvoice: 'Invoice',\r\nDelivery: 'Delivery'\r\n}\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * Automatically generated based on AppModule from SharedSettings dll\r\n */\r\n\r\n@Injectable()\r\nexport class SharedAppSettings \r\n {\r\nDefaults = {\r\nCultureId: 50,\r\nCurrencyId: 1,\r\nCountryId: 326,\r\nMenuArticleCode: 'top-menu',\r\nNewsArticleCode: 'news',\r\nFooterArticleCode: 'footer',\r\nContactArticleCode: 'contact',\r\nAboutUsArticleCode: 'about-us',\r\nServiceArticleCode: 'service',\r\nInspirationArticleCode: 'inspiration',\r\nPartnersArticleCode: 'partners',\r\nClientsArticleCode: 'clients',\r\nDivisionArticleCode: 'divisions',\r\nArticleSeoPrefix: 'article',\r\nAllowAnonymousCart: false,\r\nFacebookShareDomain: 'https://www.preciosacz002.scdev.cz',\r\nDomain: 'https://www.preciosacz002.scdev.cz',\r\nProductionDomain: 'https://www.preciosacz002.scdev.cz',\r\nTitlePrefix: 'Flex15',\r\nGrAvatarCoreUrl: 'https://www.gravatar.com',\r\nFeedFolder: 'feeds',\r\nCompany: 'Flex s.r.o.'\r\n};\r\nSearch = {\r\nFlexSuggest: true,\r\nLuigisSuggest: false,\r\nFlexSearch: true,\r\nLuigisSearch: false\r\n}\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * Automatically generated based on CartModule from SharedSettings dll\r\n */\r\n\r\n@Injectable()\r\nexport class SharedCartSettings \r\n {\r\nCartItemType = {\r\nPRODUCT: 'PRODUCT',\r\nPAYMENT: 'PAYMENT',\r\nTRANSPORT: 'TRANSPORT',\r\nCOUPON: 'COUPON',\r\nGIFT: 'GIFT'\r\n};\r\nZboziSandbox = {\r\nUseSandbox: false,\r\nZboziConversionApiUrl: 'https://www.zbozi.cz/action/#REPLACE#/conversion/backend',\r\nZboziConversionSandboxUrl: 'https://sandbox.zbozi.cz/action/#REPLACE#/conversion/backend'\r\n}\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * Automatically generated based on CategoryModule from SharedSettings dll\r\n */\r\n\r\n@Injectable()\r\nexport class SharedCategorySettings \r\n {\r\nSorting = {\r\ncolor_asc: 'color_asc',\r\ncolor_desc: 'color_desc',\r\nsize_asc: 'size_asc',\r\nsize_desc: 'size_desc',\r\norder_asc: 'order_asc',\r\nprice_asc: 'price_asc',\r\nprice_desc: 'price_desc',\r\nname_asc: 'name_asc',\r\nname_desc: 'name_desc',\r\nrecommended_desc: 'recommended_desc',\r\nBestSelling: 'from_best_selling',\r\nFromLatest: 'from_latest',\r\nByName: 'by_name',\r\napp_asc: 'app_asc',\r\napp_desc: 'app_desc',\r\nrank: 'rank'\r\n}\r\n}\r\n\r\n\r\n\r\n\r\n/**\r\n * Automatically generated based on ProductModule from SharedSettings dll\r\n */\r\n\r\n@Injectable()\r\nexport class SharedProductSettings \r\n {\r\nFlags = {\r\nbRecommended: 'bRecommended'\r\n};\r\nWatchDog = {\r\nStockMonitorTypes: {\r\nAllChanges: 'watch-dog-all-stock-changes',\r\nChangeFromZero: 'watch-dog-on-stock-change-from-zero'\r\n},\r\nPriceMonitorTypes: {\r\nCheapen: 'watch-dog-cheapen',\r\nThreshold: 'watch-dog-cheapen-under-threshold'\r\n}\r\n};\r\nSorting = {\r\nname_asc: 'name_asc',\r\nname_desc: 'name_desc',\r\ncolor_asc: 'color_asc',\r\ncolor_desc: 'color_desc',\r\nsize_asc: 'size_asc',\r\nsize_desc: 'size_desc',\r\npackage_asc: 'package_asc',\r\npackage_desc: 'package_desc',\r\namount_asc: 'amount_asc',\r\namount_desc: 'amount_desc',\r\napp_asc: 'app_asc',\r\napp_desc: 'app_desc'\r\n}\r\n}\r\n\r\n"],"names":["AsyncSubject","ArticleService","constructor","http","getArticle","id","get","getBreadcrumbs","getNews","getFooterArticles","footerContainerArticleCalled","sub","subscribe","res","_asyncSubject","next","complete","unsubscribe","getArticle404","getBranchRootArticle","branchKey","getArticleCodeChildren","req","post","i0","inputs","childIndex","factory","Translatable","DOCUMENT","JsScriptsComponent","dataSvc","seSvc","ccSvc","renderer","document","ngOnInit","addGTM","addGA","isGoogleAnalytics","script","createElement","src","gaSettings","analyticsId","async","appendChild","body","txt","addScript","isGtm","gtmId","scriptText","text","selectors","features","decls","vars","template","encapsulation","ProductRequestType","Subject","takeUntil","LuigiSuggestComponent","router","searchSvc","pipe","ngUnsubscribe","trackerId","TrackerId","initScripts","ngAfterViewInit","addEventListener","suggestVisible","LuigisAutocomplete","trackerid","AutoComplete","Layout","ShowBranding","Types","type","name","sen","size","FormatForDisplay","result","allAttributes","attributes","price","Select","e","item","_row","preventDefault","navigateByUrl","url","then","ngOnDestroy","enterFired","searchKeyUp","evt","key","search","phrase","length","nativeElement","value","searchKeyPress","fireSearchInputChanged","getSuggest","request","decodeURI","pageIndex","pageSize","requestType","Variant","toggleSearch","searchBoxVisible","$","show","hide","analytics","defer","setAttribute","style","href","auto","onload","viewQuery","ctx","EventEmitter","asyncScheduler","fromEvent","throttleTime","PageScrollService","window","trailing","scrollEvent","currentScroll","pageYOffset","lastScroll","scrollChanged","emit","previous","current","recalculateScroll","providedIn"],"sourceRoot":"webpack:///"}